51nod 1040 最大公约数之和
来源:互联网 发布:印度航母 知乎 编辑:程序博客网 时间:2024/06/08 22:46
1040 最大公约数之和
基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题
收藏 关注
给出一个n,求1-n这n个数,同n的最大公约数的和。比如:n = 6
1,2,3,4,5,6 同6的最大公约数分别为1,2,3,2,1,6,加在一起 = 15
Input
1个数N(N <= 10^9)
Output
公约数之和
Input示例
6
Output示例
15
题解:
我们可知1~n与n的最大公约数,都是n的因子。 每个因子对他的贡献为gcd(n,i)=x;我们可以想到gcd(n/x,i/x)=1; 也就是求phi(n/x) *x之和,我们枚举到根号,因为可以由n/x可以求出另一个因子x
代码:
#include <iostream>#include <cstdio>#include <cstring>#include <cstdlib>using namespace std;typedef long long LL;LL Eular(LL m){ int res=m; for(int i=2;i*i<=m;i++) { if(m%i==0) { res-=res/i; while(m%i==0) m/=i; } } if(m>1) res-=res/m; return res;}int main(){ int n; cin>>n; long long sum=0; for(int i=1;i*i<=n;i++) { if(n%i==0) { int tmp=n/i; sum+=Eular(tmp)*i; if(i!=tmp) { sum+=Eular(i)*tmp; } } } cout<<sum<<endl; return 0;}
阅读全文
0 0
- 51nod 1040:最大公约数之和
- [51nod]1040 最大公约数之和
- 【51Nod 1040】最大公约数之和
- 【51Nod 1040】最大公约数之和
- 51Nod-1040-最大公约数之和
- 51nod 1040 最大公约数之和
- 【51Nod 1040】 最大公约数之和
- 51nod-1040 最大公约数之和
- 51nod 1040 最大公约数之和
- 51nod 1040 最大公约数之和
- 51Nod 1040 最大公约数之和
- 51nod 1040 最大公约数之和 (数学)
- 51nod-1040-1040 最大公约数之和(欧拉函数)
- 51NOD 1040 1040 最大公约数之和 数论 欧拉函数
- 51nod-1040-最大公约数之和(欧拉函数)
- 51NOD 1040 最大公约数之和(分析 + 欧拉函数)
- 51nod 1040 最大公约数之和(欧拉)
- 51NOD 1040 最大公约数之和(欧拉函数 + 转化)
- 获取DataTabl的第一行和最后一行的数据
- mysql 数据库清理 磁盘空间
- SpringMVC 手动配置Bean和自动注册Bean
- 绘图笔记
- 堆栈溢出
- 51nod 1040 最大公约数之和
- B/S学习之路—DOM(3)
- 提交数据时防止表单第二次提交
- idea创建maven-archetype-webapp项目无java目录
- select源码剖析
- 内存拷贝、锁执行时间测试
- ListenableFuture
- 正则表达式30分钟入门教程
- Til the Cows Come Home