前置技能:

<=i且与i互质的数的和是phi(i)*i/2

思路:

显然每个人的步数是gcd(a[i],m)

把m的所有因数预处理出来

1~m-1中的每个数 只会被gcd(m,i)筛掉一遍

  1. //By SiriusRen
  2. #include <cstdio>
  3. #include <algorithm>
  4. using namespace std;
  5. const int N=;
  6. typedef long long ll;
  7. int cases,n,m,a[N],s[N],tp,I=;
  8. int gcd(int a,int b){return b?gcd(b,a%b):a;}
  9. int get_phi(int x){
  10. int t=x;
  11. for(int i=;i*i<=x;i++)if(x%i==){
  12. t-=t/i;
  13. while(x%i==)x/=i;
  14. }if(x>)t-=t/x;
  15. return t;
  16. }
  17. int main(){
  18. for(scanf("%d",&cases);I<=cases;I++){
  19. long long ans=;tp=;
  20. scanf("%d%d",&n,&m);
  21. for(int i=;i<=n;i++)
  22. scanf("%d",&a[i]),a[i]=gcd(a[i],m);
  23. sort(a+,a++n);
  24. n=unique(a+,a++n)-a-;
  25. for(int i=;i*i<=m;i++)if(m%i==){
  26. if(i*i==m)s[++tp]=i;
  27. else{
  28. s[++tp]=i;
  29. if(i!=)s[++tp]=m/i;
  30. }
  31. }
  32. for(int i=;i<=tp;i++)
  33. for(int j=;j<=n;j++)if(s[i]%a[j]==){
  34. ans+=get_phi(m/s[i]);break;
  35. }
  36. printf("Case #%d: %lld\n",I,1ll*ans*m/);
  37. }
  38. }

HDU 5514 欧拉函数应用的更多相关文章

  1. hdu 6390 欧拉函数+容斥(莫比乌斯函数) GuGuFishtion

    http://acm.hdu.edu.cn/showproblem.php?pid=6390 题意:求一个式子 题解:看题解,写代码 第一行就看不出来,后面的sigma公式也不会化简.mobius也不 ...

  2. HDU 5514.Frogs-欧拉函数 or 容斥原理

    Frogs Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submi ...

  3. hdu 2654(欧拉函数)

    Become A Hero Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  4. hdu 2824(欧拉函数)

    The Euler function Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  5. hdu 1395(欧拉函数)

    2^x mod n = 1 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  6. hdu 3307(欧拉函数+好题)

    Description has only two Sentences Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/327 ...

  7. 找新朋友 HDU - 1286 欧拉函数模板题

    题意: 求出来区间[1,n]内与n互质的数的数量 题解: 典型的欧拉函数应用,具体见这里:Relatives POJ - 2407 欧拉函数 代码: 1 #include<stdio.h> ...

  8. hdu 2824 欧拉函数 O(nlogn) 和O(n)

    裸题 O(nlogn): #include <cstdio> #include <iostream> #include <algorithm> using name ...

  9. hdu 4983 欧拉函数

    http://acm.hdu.edu.cn/showproblem.php?pid=4983 求有多少对元组满足题目中的公式. 对于K=1的情况,等价于gcd(A, N) * gcd(B, N) = ...

随机推荐

  1. Android TextView内容过长加省略号

    在Android TextView中有个内容过长加省略号的属性,即ellipsize,用法如下: 在xml中: android:ellipsize = "end" //省略号在结尾 ...

  2. hash存储结构【六】

    一.概述: 我们可以将Redis中的Hashes类型看成具有String Key和String Value的map容器.所以该类型非常适合于存储值对象的信息.如Username.Password和Ag ...

  3. 类(Class)

    类 · 目的 面向对象的最主要目的是提高程序的重复使用性. · 包括 属性(attribute).方法(method) · 示例 class Bird(object): have_feather = ...

  4. Android多线程研究(3)——线程同步和相互排斥及死锁

    为什么会有线程同步的概念呢?为什么要同步?什么是线程同步?先看一段代码: package com.maso.test; public class ThreadTest2 implements Runn ...

  5. vue assetsPublicPath

    vue 中 /config/index.js,  assetsPublicPath 的作用是便于访问打包后的静态资源,默认是相对于根 /, 当然如果直接把dist文件夹当成根来配置域名 可以什么都不用 ...

  6. 镜像二叉树——剑指Offer

    https://www.nowcoder.net/practice/564f4c26aa584921bc75623e48ca3011?tpId=13&tqId=11171&tPage= ...

  7. 【python】glob模块、os模块

    http://www.cnblogs.com/hongten/p/hongten_python_glob.html http://wenku.baidu.com/link?url=AgUq9_yQVj ...

  8. NA远程

    远程网络按照L1分类:     租用专线(Leased Line):一般采用同步串行链路,使用HDLC/PPP封装:     线路交换(Circuit-Switched):一般采用异步串行链路,使用H ...

  9. UML中的四种关系总结

    UML中的关系主要包含四种:关联关系.依赖关系.泛化关系.实现关系.当中关联关系还包含聚合关系和组合关系. 1. 关联关系(Association) 关联关系式一种结构化的关系,是指一种对象和还有一种 ...

  10. 背包系统学习笔(tu)记(cao)

    这几天在学习背包系统,网上有看到一个挺牛逼的背包系统,不过人家那个功能很全面,一个背包系统就囊括了装备,锻造,购买等等功能(这里给出网址:https://blog.csdn.net/say__yes/ ...