HDU 4059 The Boss on Mars
2013-11-28 19:37
369 查看
做这个题目需要知道一个数学公式,1^4+2^4+3^4+...+n^4=1/5*n^5+1/2*n^4+1/3*n^3-1/30*n,然后容斥处理一下,就没有什么了。
#include <iostream> #include <stdio.h> #include <string.h> using namespace std; const int maxn=10010; const long long mod=1000000007; bool is_prim[maxn]; int pn,prim[maxn]; int n,a[20],an; long long res; void prime() { memset(is_prim,0,sizeof(is_prim)); pn=0; is_prim[0]=1; is_prim[1]=1; for (int i=1;i<=10000;i++) { if (is_prim[i]==0)//prim[]存素数; prim[pn++]=i; for (int j=0;prim[j]*i<10000 && j<pn;j++) { is_prim[prim[j]*i]=1; //factor[prim[j]*i]=prim[j];//factor[]存最小素因子; if (i%prim[j]==0) break; } } } void do_pre(int n)//找出n的所有质因子; { an=0; int i=0; while (n>1&&i<pn) { if (n%prim[i]==0) { an++; a[an]=prim[i]; while (n%prim[i]==0) n/=prim[i]; } i++; } if (n>1) { an++; a[an]=n; } } long long f(long long n)//求1^4+2^4+3^4+...+n^4; { long long r[6]; r[0]=1; for (int i=1;i<=5;i++) r[i]=(r[i-1]*n)%(mod*30); long long ans=((6*r[5]+15*r[4]+10*r[3]-r[1])/30)%mod; return ans; } void work(long long ans,int p) { long long num=(long long )n/ans; long long k=f(num); for (int i=1;i<=4;i++) k=(k*ans)%mod; res=res+k*p; while (res<0) res+=mod; res=res%mod; } void dfs(int k,int star,long long ans) { if (k%2) work(ans,-1); else work(ans,1); for (int i=star;i<=an;i++) dfs(k+1,i+1,ans*a[i]); } int main() { freopen("in.txt","r",stdin); prime(); int t; scanf("%d",&t); while (t--) { res=0; scanf("%d",&n); do_pre(n); dfs(0,1,1); printf("%lld\n",res); } return 0; }
相关文章推荐
- HDU 4059 The Boss on Mars ( 容斥原理)
- HDU 4059 The Boss on Mars(容斥原理)
- hdu 4059 The Boss on Mars
- HDU 4059 The Boss on Mars 容斥原理+逆元
- hdu 4059 The Boss on Mars
- HDU-4059 The Boss on Mars 容斥定理
- HDU 4059 The Boss on Mars【容斥原理】
- HDU 4059 The Boss on Mars (容斥+快速幂+分解质因数)
- hdu 4059 The Boss on Mars
- hdu 4059 The Boss on Mars 容斥原理
- HDU 4059 The Boss on Mars(容斥原理)
- HDU 4059 The Boss on Mars
- HDU 4059 The Boss on Mars(数论)
- HDU 4059 The Boss on Mars【容斥原理+逆元】
- hdu 4059 The Boss on Mars
- 数论 + 容斥 - HDU 4059 The Boss on Mars
- hdu 4059 The Boss on Mars(容斥)
- HDU 4059 The Boss on Mars 容斥原理
- HDU 4059 The Boss on Mars
- 数论(容斥原理)hdu-4059-The Boss on Mars