数论模板
2017-07-07 02:42
459 查看
const int maxn=1025; const int maxp=33;//sqrt const int maxl=11;//log bool isprime[maxp]; int prime[20],c[maxn]; void makeprime() { int i,j; memset(isprime,1,sizeof(isprime)); for(i=2;i<=maxn;i++) { if(isprime[i]) prime[tot++]=i; for(j=0;j<tot&&i*prime[j]<=maxn;j++) { isprime[i*prime[j]]=false; if(i%prime[j]==0)break; } } } int power(int x,int n) { int ret=1; while(n--)ret*=x; return ret; } void abundance() { int n,m,i,j,k,sum; memset(c,-1,sizeof(c)); for(n=1;n<maxn;n++) { k=n; sum=1; for(i=0;i<tot&&prime[i]*prime[i]<=k;i++) if(k%prime[i]==0) { m=1; while(k%prime[i]==0) { k/=prime[i]; m++; } sum*=(power(prime[i],m)-1)/(prime[i]-1); } if(k>1)sum*=k+1; if(sum>n*2)c =sum-n*2; } } void process() { int i,j,l; for(i=0;i<maxn;i++) h[i][0]=c[i]; for(j=1,l=1;2*l<=maxn;j++,l*=2) for(i=0;i<=maxn-l*2;i++) h[i][j]=max(h[i][j-1],h[i+1][j-1]); } int query(int be,int ed) { int j=0; int l=1; while(l*2<=ed-be+1) { j++; l*=2; } return (h[be][j]>h[ed+1-l][j]?h[be][j]:h[ed+1-l][j]); }
相关文章推荐
- 【史前巨坑】数论模板整合【2015.5.24更新】
- 【模板】基础数论大全(链接)
- 数论-模板 (待更新)
- OI数论模板总结
- 数论 BSGS 模板
- (模板)最大公约数/最大公约数(数论基础)
- 数论:简单的模板
- 数论模板
- 数论——Lucas定理模板
- 数论 欧几里德相关 模板
- 数论模板 - 佩尔方程
- 模板:(数论:大素数判定-分解: Miller-Rabin算法)
- 数论模板,待更新。。。
- 数论中的常用算法模板
- 7C. Line【拓展欧几里得】 数论模板
- 数论模板
- ACM常用模板——数论
- POJ 1845-Sumdiv 数论 +快速幂&&筛素&&分解质因数&&求因数之和的模板
- 【数论】(贾志鹏)线性欧拉筛模板&&CODE[VS] 1453 统计素数个数2
- 数论模板2——MillerRabin、PollardRho