CO-PRIME

时间限制:1000 ms  |  内存限制:65535 KB
难度:3
描写叙述

This problem is so easy! Can you solve it?

You are given a sequence which contains n integers a1,a2……an, your task is to find how many pair(ai, aj)(i < j) that ai and aj is co-prime.

输入
There are multiple test cases.

Each test case conatains two line,the first line contains a single integer n,the second line contains n integers.

All the integer is not greater than 10^5.
输出
For each test case, you should output one line that contains the answer.
例子输入
  1. 3
  2. 1 2 3
例子输出
  1. 3

參考学长博客 
>>芷水<<

题意:给出n个正整数。求这n个数中有多少对互素的数。

分析:

fr=aladdin" target="_blank" style="text-decoration:none; color:rgb(12,137,207)">莫比乌斯反演。

此题中,设F(d)表示n个数中gcd为d的倍数的数有多少对,f(d)表示n个数中gcd恰好为d的数有多少对。

则F(d)=∑f(n) (n % d == 0)

f(d)=∑mu[n / d] * F(n)   (n %d == 0)

上面两个式子是莫比乌斯反演中的式子。

所以要求互素的数有多少对,就是求f(1)。

而依据上面的式子能够得出f(1)=∑mu[n] * F(n)。

所以把mu[]求出来。枚举n即可了,当中mu[i]为i的莫比乌斯函数。

初探莫比乌斯。还有非常多不是非常懂。跟进中。

转载请注明出处:寻找&星空の孩子

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=1066

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<algorithm>
  4. using namespace std;
  5. const int MAXN = 1e5+10;
  6. typedef long long LL;
  7.  
  8. LL F[MAXN],f[MAXN];
  9. int pri[MAXN],pri_num;
  10. int mu[MAXN];//莫比乌斯函数值
  11. int vis[MAXN],a[MAXN];
  12.  
  13. void mobius(int N) //筛法求莫比乌斯函数
  14. {
  15. pri_num = 0;//素数个数
  16. memset(vis, 0, sizeof(vis));
  17. vis[1] = mu[1] = 1;
  18. for(int i = 2; i <=N; i++)
  19. {
  20. if(!vis[i])
  21. {
  22. pri[pri_num++] = i;
  23. mu[i] = -1;
  24. }
  25. for(int j=0; j<pri_num && i*pri[j]<N ;j++)
  26. {
  27. vis[i*pri[j]]=1;//标记非素数
  28. //eg:i=3,i%2,mu[3*2]=-mu[3]=1;----;i=6,i%5,mu[6*5]=-mu[6]=-1;
  29. if(i%pri[j])mu[i*pri[j]] = -mu[i];
  30. else
  31. {
  32. mu[i*pri[j]] = 0;
  33. break;
  34. }
  35.  
  36. }
  37. }
  38. }
  39.  
  40. inline LL get(int x)
  41. {
  42. return (LL)((x*(x-1))/2);
  43. }
  44.  
  45. int main()
  46. {
  47. mobius(100005);
  48. int n;
  49. while(~scanf("%d",&n))
  50. {
  51. memset(F,0,sizeof(F));
  52. memset(f,0,sizeof(f));
  53. int mmax = -1;
  54. for(int i = 1; i <= n; i++)
  55. {
  56. scanf("%d",&a[i]);
  57. f[a[i]]++;
  58. mmax = max(mmax, a[i]);
  59. }
  60. //求F[N]
  61. for(int i=1;i<=mmax;i++)
  62. {
  63. for(int j=i;j<=mmax;j+= i)
  64. {
  65. F[i]+=f[j];//个数
  66. }
  67. F[i]=get(F[i]);//C(N,2),表示对数;保证了gcd(a,b);(a<b)
  68. }
  69.  
  70. LL ans = 0;
  71. for(int i=1; i<=mmax; i++)
  72. ans+=F[i]*mu[i];
  73. printf("%lld\n", ans);
  74. }
  75. return 0;
  76. }

CO-PRIME(初探 莫比乌斯)NYOJ1066(经典)gcd(a,b)=1的更多相关文章

  1. HDU 1016 Prime Ring Problem(经典DFS+回溯)

    Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  2. UVA 1642 Magical GCD(经典gcd)

    题意:给你n(n<=100000)个正整数,求一个连续子序列使序列的所有元素的最大公约数与个数乘积最大 题解:我们知道一个原理就是对于n+1个数与n个数的最大公约数要么相等,要么减小并且减小至少 ...

  3. 数学:莫比乌斯反演-GCD计数

    Luogu3455:莫比乌斯反演进行GCD计数 莫比乌斯反演就是用来解决这一类问题的,通常f函数是要求的那个,F函数是显然的 这样利用F的结果就可以推出来f的结果 在计算结果的时候整除分快儿一下就可以 ...

  4. 牛客小白月赛13-J小A的数学题 (莫比乌斯反演)

    链接:https://ac.nowcoder.com/acm/contest/549/J来源:牛客网 题目描述 小A最近开始研究数论题了,这一次他随手写出来一个式子,∑ni=1∑mj=1gcd(i,j ...

  5. ZOJ 3435 Ideal Puzzle Bobble 莫比乌斯反演

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4119 依然是三维空间内求(1,1,1)~(a,b,c)能看到的整点数,平移一下 ...

  6. Algorithm: Prime & Euler Function & Productive Function

    素数筛 朴素算法 一般来说,可以用试除法判断某一个数是不是素数: bool isPrime(int n) { if(n < 2) return false; for(int i = 2; i & ...

  7. (转载)有关反演和gcd

    tips : 积性函数 F (n) = Π F (piai ) 若F (n), G (n)是积性函数则 F (n) * G (n) Σd | n F (n) 是积性函数 n = Σd | n  φ ( ...

  8. hdu-3071 Gcd & Lcm game---质因数分解+状态压缩+线段树

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3071 题目大意: 给定一个长度为n的序列m次操作,操作的种类一共有三种 查询 L :查询一个区间的所 ...

  9. 51Nod 1439:互质对(用莫比乌斯来容斥)

    有n个数字,a11,a22,…,ann.有一个集合,刚开始集合为空.然后有一种操作每次向集合中加入一个数字或者删除一个数字.每次操作给出一个下标x(1 ≤ x ≤ n),如果axx已经在集合中,那么就 ...

随机推荐

  1. layer弹窗

    layer.alert(content, options, yes) - 普通信息框 它的弹出似乎显得有些高调,一般用于对用户造成比较强烈的关注,类似系统alert,但却比alert更灵便.它的参数是 ...

  2. iOS开发者中心重置设备列表

    苹果开发者账号允许的测试设备为100台,如果你注册了,这台机器就算是一个名额,禁用也算一个名额,仍被计入机器总数,每年可以重置一次,那我们怎么重置机器数量呢? 我们需要给苹果发送申请: https:/ ...

  3. NOIp模拟赛三十

    心态崩了的一天 先Orz yrx 开场五分钟yrx大吼一声:“这B题不是原题吗” hjw:“对哦好像我也做过哦” 过了十分钟yrx又大吼一声:“这C题我也做过啊,洪水那题啊” 于是 像我这种傻逼A题一 ...

  4. 学习参考《Flask Web开发:基于Python的Web应用开发实战(第2版)》中文PDF+源代码

    在学习python Web开发时,我们会选择使用Django.flask等框架. 在学习flask时,推荐学习看看<Flask Web开发:基于Python的Web应用开发实战(第2版)> ...

  5. sz xshell

    yum install lrzsz -y

  6. Fastlane基础介绍

    Fastlane是什么 Git地址: Fastlane 文档地址:Fastlane Document Fastlane是一整套的客户端CICD工具集合.Fastlane可以非常快速简单的搭建一个自动化 ...

  7. Linux入门基础二

    1.查看用户 who参数          说明 -a      打印能打印的全部 -d      打印死掉的进程 -m    同am i,mom likes -q      打印当前登录用户数及用户 ...

  8. ubuntu下不用拔盘就可以重新识别usb设备

    #!/bin/sh # Usage: ./resetusb ARGUMENT(The keyword for your usb device) var1=$ keyword=${var1:=Stora ...

  9. Python 入门学习 -----变量及基础类型(元组,列表,字典,集合)

    Python的变量和数据类型 1 .python的变量是不须要事先定义数据类型的.能够动态的改变 2. Python其中一切皆对象,变量也是一个对象,有自己的属性和方法 我们能够通过 来查看变量的类型 ...

  10. When you are old (当你老了)

    - William Butler Yeats --威廉·巴特勒·叶芝 When you are old and grey and full of sleep: 当你老了,头发花白,睡意沉沉. And ...