trainging contest#1(2011大连现场赛)I BY bly
2013-09-23 21:30
459 查看
先因式分解,记录所有的因子
然后直接容斥即可,四次方和公式:n*(n+1)*(2*n+1)*(3*n^2+3*n-1)/30
然后直接容斥即可,四次方和公式:n*(n+1)*(2*n+1)*(3*n^2+3*n-1)/30
#include <iostream> #include <cstdio> #include <cstring> using namespace std; typedef long long LL; const LL mod=1000000007; int vis[1000010],c; LL rev; int prime[1000000]; LL pow_mod(LL n) { if(n==0) return 1; LL ans=pow_mod(n/2); ans=ans*ans%mod; if(n%2==1) ans=ans*30%mod; return ans; } void init() { memset(vis,0,sizeof(vis)); c=0;rev=pow_mod(mod-2); for(int i=2;i<=1000;i++) if(!vis[i]) { for(int j=i*i;j<=1000000;j+=i) vis[j]=1; } for(int i=2;i<=1000000;i++) if(!vis[i]) prime[c++]=i; } LL getsum(LL x) { LL t1=(x*x%mod+x)%mod; LL t2=(2*x%mod+1)%mod; LL t3=((3*x)%mod*x%mod+3*x%mod-1+mod)%mod; return ((t1*t2%mod)*t3%mod)*rev%mod; } LL getfour(LL x) { return ((x*x%mod)*x%mod)*x%mod; } int fac[100],f,n; int main() { init(); int T; scanf("%d",&T); while(T--) { scanf("%d",&n); int tmp=n; f=0; for(int i=0;i<c;i++) { if(tmp%prime[i]==0) fac[f++]=prime[i]; while(tmp%prime[i]==0) tmp/=prime[i]; } if(tmp!=1) fac[f++]=tmp; LL ans=getsum(n); for(int i=1;i<(1<<f);i++) { int bitcount=0,a=1; for(int j=0;j<f;j++) if(i&(1<<j)) { a*=fac[j]; bitcount++; } LL t=getfour(a)*getsum(n/a)%mod; if(bitcount%2==1) ans=(ans-t+mod)%mod; else ans=(ans+t)%mod; } printf("%lld\n",ans); } return 0; }
相关文章推荐
- trainging contest#2(2011成都现场赛)G BY bly
- trainging contest#2(2011成都现场赛)A BY bly
- trainging contest#1(2011大连现场赛)C BY bly
- trainging contest#2(2011成都现场赛)D BY bly
- ZOJ 3542 Hexadecimal View [2011大连现场赛]
- 2011 ACM/ICPC 大连赛区现场赛题解:Compress the String
- HDU 4059 The Boss on Mars 2011大连现场赛
- trainging contest#2(2011成都现场赛)I BY Hyoga
- 套题总结:2011大连现场赛
- ZOJ 3542 2011大连现场赛D题(简单模拟)
- Hexadecimal View (2011ACM亚洲大连赛区现场赛D题)
- ZOJ 3542 2011大连现场赛D题(简单模拟)
- ZOJ 3547 The Boss on Mars 2011大连现场赛I题 数论
- 大连赛区现场赛D题 ZOJ 3542 Hexadecimal View
- hdu 4002 欧拉函数 2011大连赛区网络赛B
- 2011 ACM/ICPC 北京现场赛 B HouYi's secret
- vForum 2011 Beijing现场图文播报三 动手实验营
- hdu 4112 2011 ACM成都现场赛B
- 2011 Multi-University Training Contest 3 - Host by BIT
- hdu 4004 二分 2011大连赛区网络赛D