BZOj2705: [SDOI2012]Longge的问题
2016-03-16 11:16
441 查看
2705: [SDOI2012]Longge的问题
Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 1941 Solved: 1219
[Submit][Status][Discuss]
Description
Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题。现在问题来了:给定一个整数N,你需要求出∑gcd(i, N)(1<=i <=N)。Input
一个整数,为N。Output
一个整数,为所求的答案。Sample Input
6Sample Output
15HINT
【数据范围】对于60%的数据,0<N<=2^16。
对于100%的数据,0<N<=2^32。
设n的约数k则有求满足gcd(n,m)=k的m的个数转化gcd(n/k,m/k)=1的个数
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<list>
#include<vector>
using namespace std;
long long Euler(long long n){
long long ret=1,i;
for(i=2;i*i<=n;++i){
if(n%i==0){
n/=i;ret*=i-1;
while(n%i==0){
n/=i;ret*=i;
}
}
}
if(n>1)ret*=n-1;
return ret;
}
int main()
{
long long n,ans,i;
while(scanf("%lld",&n)!=EOF){
ans=0;
for(i=1;i*i<=n;++i){
if(n%i==0){
if(i*i==n){
ans+=i*Euler(i);
}
else {
ans+=i*Euler(n/i);
ans+=(n/i)*Euler(i);
}
}
}
printf("%lld\n",ans);
}
return 0;
}
相关文章推荐
- Android studio b Error: No resource found that matches the given name (at 'src' with value '@dra...
- 仿京东App分类页面的实现
- 矩阵、向量求导法则
- 基于Material Design设计的分享文字图片的APP
- Java类集
- 通过nginx配置文件抵御攻击
- 古典密码之hill密码的加密与解密程序实现
- C++虚函数及虚函数表解析
- http response乱码的真相 response重定向地址栏乱码
- 数据库几个函数记录
- C++:类与对象
- C/C++的条件编译
- Java中sleep()与wait()区别
- python 中文处理大坑
- Android 开发之API兼容问题
- linux 系统查看目录下各目录大小
- intellij 做 毕业设计时遇到的问题 及其解决的办法
- JS事件_动态添加
- CentOS 7.1 Bridge启用STP报错"Master connection not found or invalid"
- java.lang.OutOfMemoryError: Java heap space 解决方案