HDU-#3501 Calculation 2(欧拉函数+容斥原理)
2014-08-19 16:22
134 查看
题目大意:求小于N且与N不互质的数的和。
解题思路:要求小于N且与N互不为质的和,可以先利用欧拉函数求出小于N与N互质的和,由定理若gcd(n,i)==1,则gcd(n,n-i)==1,可得sum(n)=phi(n)*n/2。则最后用总和减掉即可。详见code。
题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=3501
code:
解题思路:要求小于N且与N互不为质的和,可以先利用欧拉函数求出小于N与N互质的和,由定理若gcd(n,i)==1,则gcd(n,n-i)==1,可得sum(n)=phi(n)*n/2。则最后用总和减掉即可。详见code。
题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=3501
code:
#include <iostream> #include <cstdio> #include <cmath> using namespace std; #define ll __int64 #define Mod 1000000007 ll n; ll phi(ll n){ ll res=n; for(ll i=2;i<(ll)sqrt(n*1.0)+1;i++) if(n%i==0){ res=res/i*(i-1); while(n%i==0) n/=i; } if(n>1) res=res/n*(n-1); return res; } int main(){ while(scanf("%I64d",&n)!=EOF && n){ ll ans=(n+1)*n/2-n; ans-=phi(n)*n/2; printf("%I64d\n",ans%Mod); } return 0; }
相关文章推荐
- hdu 3501 Calculation 2(<n且与n不互质的数之和)
- HDU 3501 Calculation 2 (欧拉函数应用)
- hdu 3501 Calculation 2
- 【欧拉】HDU 3501 Calculation 2
- HDU——T 3501 Calculation 2
- hdu 3501 Calculation 2 求所以小于n且与n不互质的数之和
- 【数论-欧拉函数】HDU 3501 Calculation 2 ( 与n不互质的数的和 )
- hdu 3501 Calculation 2(<n且与n不互质的数之和)
- HDU -- 3501 Calculation 2 【欧拉函数性质的应用】
- HDU 3501 Calculation 2 ——Dirichlet积
- hdu 3501 Calculation 2(<n且与n不互质的数之和)
- HDU 3501 Calculation 2
- hdu 3501 Calculation 2(<n且与n不互质的数之和)
- hdu 3501 Calculation 2
- hdu 3501 Calculation 2(<n且与n不互质的数之和)
- HDU 3501 Calculation 2 不互质数的和
- hdu 3501 Calculation 2 (欧拉函数)
- hdu 3501 Calculation 2
- hdu 3501 Calculation 2(<n且与n不互质的数之和)
- [HDU]3501 Calculation 2 [欧拉函数之求和]