hdu 5072 莫比乌斯反演
来源:互联网 发布:c语言实现贪吃蛇 编辑:程序博客网 时间:2024/05/16 09:59
hdu 5072 莫比乌斯反演
题意:
给出n个数a1,a2,...,an, 从中选出三个数a,b,c,且这三个数符合[(a,b)=(b,c)=(a,c)=1] || [(a,b)!=1 && (b,c)!=1 && (a,c)!=1] 其中(x,y)表示x,y的最大公约数。求符合这个条件的三元组的个数。
限制:
3 <= n <= 1e5; 1 <= ai <= 1e5
思路:
设bi为与ai互质的数的个数,则符合条件 !(((a,b)=(b,c)=(a,c)=1) || ((a,b)!=1 && (b,c)!=1 && (a,c)!=1)) 的三元组的个数为:
t=(sigma(1~n)bi*(n-1-bi))/2
可以看到C(n,3)-t即为答案。
下面证明上面式子的由来:
对于任意符合条件的a,b,c有以下6种情况:
1. (a,b)=1 && (a,c)!=1 && (b,c)=1
2. (a,b)=1 && (a,c)!=1 && (b,c)!=1
3. (a,b)!=1 && (a,c)=1 && (b,c)=1
4. (a,b)!=1 && (a,c)=1 && (b,c)!=1
5. (a,b)=1 && (a,c)=1 && (b,c)!=1
6. (a,b)!=1 && (a,c)!=1 && (b,c)=1
我们可以发现bi*(n-1-bi)只覆盖了上面的1~4的情况,但我们又发现剩下两种情况可以由b或c来覆盖
其实对于1~6的情况,每种情况都被覆盖了两遍
1. 被a,c覆盖
2. 被a,b覆盖
...
所以是所有的加起来/2
然后问题就被化简为对于每个数,在复杂度内求和它互质的数的个数,这个可以用容斥做,也可以用莫比乌斯反演来做
对于一个给定的数x0
设f(k)为gcd(x0,x)=k的x的数目
设F(k)为gcd(x0,x)为k的倍数的x的数目,然后发现F(k)为拥有因子k的ai的数目,这个可以用O(sqrt(ai))枚举因子预处理出来。
题意:
给出n个数a1,a2,...,an, 从中选出三个数a,b,c,且这三个数符合[(a,b)=(b,c)=(a,c)=1] || [(a,b)!=1 && (b,c)!=1 && (a,c)!=1] 其中(x,y)表示x,y的最大公约数。求符合这个条件的三元组的个数。
限制:
3 <= n <= 1e5; 1 <= ai <= 1e5
思路:
设bi为与ai互质的数的个数,则符合条件 !(((a,b)=(b,c)=(a,c)=1) || ((a,b)!=1 && (b,c)!=1 && (a,c)!=1)) 的三元组的个数为:
t=(sigma(1~n)bi*(n-1-bi))/2
可以看到C(n,3)-t即为答案。
下面证明上面式子的由来:
对于任意符合条件的a,b,c有以下6种情况:
1. (a,b)=1 && (a,c)!=1 && (b,c)=1
2. (a,b)=1 && (a,c)!=1 && (b,c)!=1
3. (a,b)!=1 && (a,c)=1 && (b,c)=1
4. (a,b)!=1 && (a,c)=1 && (b,c)!=1
5. (a,b)=1 && (a,c)=1 && (b,c)!=1
6. (a,b)!=1 && (a,c)!=1 && (b,c)=1
我们可以发现bi*(n-1-bi)只覆盖了上面的1~4的情况,但我们又发现剩下两种情况可以由b或c来覆盖
其实对于1~6的情况,每种情况都被覆盖了两遍
1. 被a,c覆盖
2. 被a,b覆盖
...
所以是所有的加起来/2
然后问题就被化简为对于每个数,在复杂度内求和它互质的数的个数,这个可以用容斥做,也可以用莫比乌斯反演来做
对于一个给定的数x0
设f(k)为gcd(x0,x)=k的x的数目
设F(k)为gcd(x0,x)为k的倍数的x的数目,然后发现F(k)为拥有因子k的ai的数目,这个可以用O(sqrt(ai))枚举因子预处理出来。
0 0
- hdu 5072 莫比乌斯反演
- hdu 1695 莫比乌斯反演
- hdu 1695 莫比乌斯反演
- hdu 1695 莫比乌斯反演
- HDU 5656 (莫比乌斯反演)
- HDU 4675 (莫比乌斯反演)
- hdu 5212(莫比乌斯反演)
- hdu 1695 莫比乌斯反演
- HDU 1695 莫比乌斯反演
- HDU 6053 莫比乌斯反演
- hdu 6053-莫比乌斯反演
- HDU 6134 莫比乌斯反演
- HDU 6134 莫比乌斯反演
- hdu 6134(莫比乌斯反演)
- HDU 6053 莫比乌斯反演
- hdu 1695 莫比乌斯反演
- [hdu 5072]Coprime 数论-莫比乌斯反演
- 二项式反演,莫比乌斯反演。
- 用matlab寻找一个信号中频率最强最大的哪一点位置
- linux 线程管理、同步机制等
- YT15-HDU-分pie
- UVa 220 Othello
- 线程同步机制:互斥量、信号量、读写锁、条件变量
- hdu 5072 莫比乌斯反演
- nodejs之app
- HADOOP+R+RHIPE安装
- * ACM 有用的练习题整理 (一)
- Markdown学习笔记----概述
- 最佳线程数总结(1
- 谷歌收购 ReCaptcha 2009
- HDU 1372--Knight Moves【BFS】
- 题目1473:二进制数