UVA
来源:互联网 发布:提现接口网站 php 编辑:程序博客网 时间:2024/06/05 10:07
#include<cstdio>#include<cstring>/*输入一个数n,求解Gfor(int i=1;i<n;i++) for(int j=i+1;j<=n;j++) G+=gcd(i,j);既所有满足1<=i<j<=n的数对(i,j)所对应的gcd(i,j)之和设f(n)=gcd(1,n)+gcd(2,n)+gcd(3,n)+...+gcd(n-1,n)s(n)=s(n-1)+f(n)f(n)=sum{i*phi(n/i)|i是n的约数}对于每个i枚举它的倍数,并且更新f(n)*/typedef long long LL;const int maxn=4e6+5;LL s[maxn],f[maxn];int phi[maxn];//用类似筛法计算phi(n)void phi_table(int n){ for(int i=0;i<=n;i++) phi[i]=0; phi[1]=1; for(int i=2;i<n;i++) { if(!phi[i]) { for(int j=i;j<n;j+=i) { if(!phi[j]) phi[j]=j; phi[j]=phi[j]/i*(i-1); } } }}int main(){ phi_table(maxn); memset(f,0,sizeof(f)); for(int i=1;i<maxn;i++) { for(int j=i*2;j<maxn;j+=i) { f[j]+=i*phi[j/i]; } } s[2]=f[2]; for(int i=3;i<maxn;i++) { s[i]=s[i-1]+f[i]; } int n; while(scanf("%d",&n)==1&&n) { printf("%lld\n",s[n]); } return 0;}
阅读全文
0 0
- uva
- UVA
- UVA
- UVA
- uva
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- json解析[详细]
- Python 之ConfigParser
- [Leetcode] 307. Range Sum Query
- Hbase-1.0.2 启动成功,但无法访问master:60010
- 扔石头的问题Stone
- UVA
- netty学习一:用netty构造http服务的小demo
- Linux系统结构
- linux驱动篇之 driver_register 过程分析(一)
- ACdream 1110 True love (多重背包+dp)
- GeoMesa-Accumulo安装并运行示例
- Virtualbox高性能读写Win10主机共享目录
- mysql 事务的写法与使用
- Android Fragment真正的完全解析(上)