Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题。现在问题来了:给定一个整数N,你需要求出∑gcd(i, N)(1<=i <=N)。
标签:php pen == def bsp out 挑战 logs type
【数据范围】
对于60%的数据,0<N<=2^16。
对于100%的数据,0<N<=2^32。
1 #include "bits/stdc++.h" 2 using namespace std; 3 typedef long long LL; 4 LL n,ans; 5 LL eular(LL x){ 6 LL i,an=x; 7 for (i=2;i*i<=x;i++) 8 if (x%i==0){ 9 an=an/i*(i-1); 10 while (x%i==0) x/=i; 11 } 12 if (x!=1) an=an/x*(x-1); 13 return an; 14 } 15 int main(){ 16 freopen ("question.in","r",stdin);freopen ("question.out","w",stdout); 17 int i,j; 18 scanf("%lld",&n); 19 for (i=1;i*i<n;i++) 20 if (n%i==0) 21 ans+=i*eular(n/i)+n/i*eular(i); 22 if (i*i==n) ans+=i*eular(i); 23 printf("%lld",ans); 24 return 0; 25 }
BZOJ-2705: [SDOI2012]Longge的问题 (欧拉函数)
标签:php pen == def bsp out 挑战 logs type
原文地址:http://www.cnblogs.com/keximeiruguo/p/7780546.html