uva 11426 GCD - Extreme (II) (神奇的GCD)
来源:互联网 发布:银湖网骗局 知乎 编辑:程序博客网 时间:2024/05/18 02:56
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2421
大意:给定正整数N,求出
for(i=1;i<N;i++)
for(j=i+1;j<=N;j++)
G+=gcd(i,j);
G的值。
分析:老样子,举例看规律
n=3 贡献的公约数:1*2
n=6 贡献的公约数:2*2
n=9 贡献的公约数:3*2
所以我们可以这样想,对N素因子分解,然后用得到的一个个素因子去计算所有n的公约数贡献值。
比如上面,p=3.
n=3, ans+=phi(3)*1;
n=3*2, ans+=phi(3)*2
n=3*3, ans+=phi(3)*3.
设一个数组f[],f(i*j)+=phi(i)*j.
最后累加。
#include <iostream>#include <cstdio>using namespace std;const int N=4e6+10;typedef long long LL;int phi[N];LL f[N];void getphi(){ for(int i=1;i<N;i++) phi[i]=i; for(int i=2;i<N;i++){ if(phi[i]==i){ for(int j=i;j<N;j+=i){ phi[j]=phi[j]-phi[j]/i; } } for(int j=1;j*i<N;j++){ f[j*i]+=j*phi[i]; } }}int main(){ //freopen("cin.txt","r",stdin); getphi(); int n; while(cin>>n&&n){ LL ans=0; for(int i=1;i<=n;i++) ans+=f[i]; printf("%lld\n",ans); } return 0;}
0 0
- uva 11426 GCD - Extreme (II) (神奇的GCD)
- UVA 11426 - GCD - Extreme (II) (数论)
- UVA 11426 - GCD - Extreme (II)
- UVA 11426 GCD - Extreme (II)
- uva 11426 GCD Extreme (II)
- UVA - 11426 GCD - Extreme (II)
- UVA:11426 GCD - Extreme (II)
- UVA 11426 GCD - Extreme (II)
- UVA 11426-GCD - Extreme (II)
- UVA 11426GCD - Extreme (II)
- UVA 11426 GCD - Extreme (II)
- UVA 11426 - GCD Extreme(II)
- UVA 11426 GCD Extreme (II)
- UVA 11426 - GCD - Extreme (II) (数论)
- uva 11426 - GCD - Extreme (II)(数论)
- 【欧拉】 UVA 11426 GCD - Extreme (II)
- 欧拉 uva 11426 - GCD - Extreme (II)
- Uva 11426 GCD - Extreme (II)(基本数论)
- chrome浏览器添加个性标签,可以弹出代码编辑器
- The Elements of Statistical Learning的笔记
- Django1.9 models数据库同步问题
- Caffe学习系列(23):如何将别人训练好的model用到自己的数据上
- Java中方法的重载
- uva 11426 GCD - Extreme (II) (神奇的GCD)
- CentOS学习13_rpm常用命令及rpm参数介绍
- 经亲自实验,一台Windows电脑,同时接入2个USB鼠标和2个USB键盘,均可正常使用。
- IOS导航栏颜色渐变与常用属性(最近应用比较流行的风格)
- Android开发笔记(五十二)通知推送Notification
- Ehcache memcache redis 三大缓存
- 开发者必备的6款源码搜索引擎
- iOS Code Signing(ios自学笔记)
- PHP模拟HTTP请求