BZOJ2705 [SDOI2012]Longge的问题 【欧拉函数】
来源:互联网 发布:深入浅出数据分析 pdf 编辑:程序博客网 时间:2024/06/05 18:32
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2705
题解:
首先感谢SDOI出题组出了POJ2480的原题= =b
—-参考hzwer的题解—–
设函数s(k) 为 gcd(m, n)=k中的m的个数,那么gcd(m/k, n/k)一定为1,即互质,我们可以使用欧拉函数来解决。
代码:
// by DenyTianly#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;typedef long long LL;const int inf = 1 << 26;typedef long long LL;LL n;LL phi(LL p) { // To do something here LL ans = p; for ( LL i = 2; i*i <= n; i ++ ) { if(p%i == 0) { ans = ans/i*(i-1); while(p%i == 0) p /= i; } } if(p > 1) ans = ans/p*(p-1); return ans;}int main(){ while( scanf("%lld", &n) != EOF ){ LL ans = 0; for ( LL k = 1; k*k <= n; k ++ ) { if(n%k == 0) { ans += (LL)k*phi(n/k); if(k*k != n) ans += (LL)(n/k)*phi(k); } } printf("%lld\n", ans); } return 0;}
0 0
- BZOJ2705 [SDOI2012]Longge的问题(欧拉函数)
- [欧拉函数]Bzoj2705 Longge的问题[SDOI2012]
- 【bzoj2705】【sdoi2012】【longge的问题】【欧拉函数】
- 【bzoj2705】[SDOI2012]Longge的问题 欧拉函数
- [BZOJ2705] [SDOI2012] Longge的问题 - 欧拉函数
- bzoj2705: [SDOI2012]Longge的问题 欧拉函数
- BZOJ2705 [SDOI2012]Longge的问题 【欧拉函数】
- BZOJ2705: [SDOI2012]Longge的问题(欧拉函数)
- bzoj2705[SDOI2012]Longge的问题 欧拉函数
- [BZOJ2705][SDOI2012]Longge的问题(欧拉函数)
- BZOJ2705 [SDOI2012]Longge的问题 【欧拉函数】
- 【欧拉函数】BZOJ2705(SDOI2012)[Longge的问题]题解
- 【欧拉函数】BZOJ2705 [SDOI2012]Longge的问题
- BZOJ2705[Longge的问题] 欧拉函数
- bzoj2705[SDOI2012]Longge的问题
- 【SDOI2012】【BZOJ2705】Longge的问题
- [BZOJ2705][SDOI2012]Longge的问题
- BZOJ2705: [SDOI2012]Longge的问题
- 【三】数据结构之Stack
- Mybatis逆向工程
- 机器学习实战之K-近邻算法总结和代码解析
- vim如何添加或删除多行注释
- 字节流与字符流区别详解
- BZOJ2705 [SDOI2012]Longge的问题 【欧拉函数】
- bzoj3956:Count
- Servlet
- linux1
- vue2.0父子组件间通信
- va_start和va_end使用详解
- populating-next-right-pointers-in-each-node
- vim编辑器中如何查找某个词
- vue.js 实现 todo list 任务表单-2