poj 2480 gcd求和
来源:互联网 发布:郑州北环淘宝城在哪里 编辑:程序博客网 时间:2024/05/19 08:41
可以容易得知,F=sum(p*phi(n/p))。
由于gcd(i,n*m)=gcd(i,m)*gcd(i,n),所以gcd为积性函数。而积性函数之和为积性函数。
所以F=sum(gcd(i,n))为积性函数。n=p1^k1*p2^k2….所以f(p1^k1)*f(p2^k2)…=F。
而f(p^r)由最初公式知f(p^r)=p*phi(n/p)r=p(p-1)*r。代入以上公式即可求得。
代码如下:
#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#define int __int64using namespace std;int n,m,ans,a,p;signed main(void){ while(scanf("%lld",&n)!=EOF){ m=floor(sqrt((double)n)),ans=n; for(int i=2;i<=m;i++){ if(n%i==0){ a=0,p=i; while(n%p==0) a++,n/=p; ans+=ans*a*(p-1)/p; } } if(n!=1) ans+=ans*(n-1)/n; printf("%I64d\n",ans); } return 0;}
by >o< neighthorn
1 0
- poj 2480 gcd求和
- BZOJ2005 能量汇集 【gcd求和】
- POJ 2480 : Longge\'s problem - gcd之和
- N个数求和(cccc分数求和—gcd)
- poj 2796 数字求和
- POJ 2209求和最大
- POJ 2796:数字求和
- POJ 2940:求和
- hdu 5786 Interval 区间gcd求和
- bzoj 2818 Gcd 欧拉函数求和
- poj 1061 扩展gcd
- POJ 1061扩展gcd
- poj 1061 扩展GCD
- GCD & LCM Inverse POJ
- GCD & LCM Inverse POJ
- poj 2480 欧拉函数+积性函数+GCD
- POJ 3468(区间更新,求和)
- POJ 2231 Moo Volume【求和】
- 周期性方程
- Metrics 使用
- 合并两个数组,两者重复的删除,单着重复的出现一个。
- [51nod]1381 硬币游戏
- 【原创】windows体系结构学习笔记
- poj 2480 gcd求和
- 不定长顺序表
- 数据结构——c语言描述 第五章(3)十字链表存储稀疏矩阵
- 远程过程调用(RPC)详解
- Eclipse导出JavaDoc中文乱码问题解决
- java web应用连接mysql会突然connection连接失败
- Android官方开发文档Training系列课程中文版:创建自定义View之View的绘制
- NOIP 2012 同余方程
- 应用之间的跳转和数据传递