hdu3501 欧拉函数(或容斥原理(莫比乌斯函数))
来源:互联网 发布:淘宝动漫周边店 编辑:程序博客网 时间:2024/05/22 11:55
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3501
题解1:显然,本体可以用容斥原理,求出每个数的倍数情况,其系数就是莫比乌斯函数。
题解2:对于整数n,如果x(x<n)与n互质,那么(n-x)也与n是互质的;同理如果x(x<n)与n不互质,那么(n-x)也与n是不互质的。知道这个之后就可以得出:在0<x<n时,存在这样的x与n互质的个数假设为num(可以通过欧拉函数求得),那么所有与n互质的x的和sum=num*n/2.
题解2代码如下:
#include <bits/stdc++.h>#define ll long longusing namespace std;const int maxn = 1e5 + 10;const int MOD = 1000000007;int primes[maxn],pcnt;int vis[maxn];ll n;void get_prime(int n){vis[1] = 1;for(int i = 2;i <= n;i++){if(!vis[i]) primes[++pcnt] = i;for(int j = 1;j <= pcnt && primes[j] * i <= n;j++){vis[i * primes[j]] = 1;if(i % primes[j] == 0) break;}}}int main(){get_prime(maxn - 10);while(~scanf("%lld",&n) && n){ll phi = n,tmp = n;for(int i = 1;i <= pcnt;i++){ll t = primes[i];if(t * t > n) break;if(n % t == 0) {phi = phi / t * (t - 1);while(n % t == 0) n/=t;}}if(n > 1) phi = phi / n * (n - 1);ll ans = (long long)phi * tmp / 2;ans = (tmp * (tmp - 1)) / 2 - ans;printf("%lld\n",ans % MOD);}return 0;}
阅读全文
0 0
- hdu3501 欧拉函数(或容斥原理(莫比乌斯函数))
- hdu1695((容斥定理+欧拉函数)或(莫比乌斯反演))
- hdu1695(莫比乌斯)或欧拉函数+容斥
- hdu3501(欧拉函数水)
- HDOJ 1695 GCD(容斥+欧拉函数&&莫比乌斯反演+分块)
- hdu 1695 GCD 欧拉函数+容斥 ||莫比乌斯反演
- HDU 1695 数论 容斥 欧拉函数 || 莫比乌斯反演
- hdu6053 TrickGCD 莫比乌斯函数 容斥原理
- HDU_1695_GCD(欧拉函数+容斥原理+DFS)
- hdu1695--GCD(欧拉函数+容斥原理)
- hdu4135--Co-prime(欧拉函数+容斥原理)
- HDU 1695(欧拉函数+容斥原理)
- hdu-1695 GCD(容斥原理+欧拉函数)
- hdu 1695 GCD (欧拉函数、容斥原理)
- HDU 1695 GCD(欧拉函数+容斥原理)
- HDU 1695 GCD(欧拉函数+容斥原理)
- HDU 1695 GCD (欧拉函数+容斥原理)
- hdu 1695(欧拉函数+容斥原理)
- Eclipse 代码补全设置
- 2017年8月11日训练日记
- 协同过滤推荐算法的原理及实现
- 英语学习而得不到想要的结果思考
- [CODEVS4605]LCA
- hdu3501 欧拉函数(或容斥原理(莫比乌斯函数))
- Mysql的架构和历史(一)
- 继承
- css-过度模块
- 替换空格
- 中止僵死的expdp任务
- 枚举——最佳生理周期
- Mysql的架构和历史(二)
- 训练总结 8.11