1968: [Ahoi2005]COMMON 约数研究
2016-03-18 06:15
274 查看
#include<cstdio> #include<iostream> #define M 1000008 using namespace std; long long tot,f[M],sum[M],ans,n,b[M],p[M]; int main() { scanf("%d",&n); ans=1; for(int i=2;i<=n;i++) { if(!b[i]) { tot++; p[tot]=i; sum[i]=1; f[i]=2; } for(int j=1;j<=tot;j++) { if(i*p[j]>n) break; b[i*p[j]]=1; if(i%p[j]) { f[i*p[j]]=f[i]*2; sum[i*p[j]]=1; } else { f[i*p[j]]=f[i]/(sum[i]+1)*(sum[i]+2); sum[i*p[j]]=sum[i]+1; } } ans+=f[i]; } printf("%lld\n",ans); return 0; }
权当练习下线性筛求约数个数。
相关文章推荐
- 5.十进制转m进制
- 4.m进制转十进制
- bzoj 1965: [Ahoi2005]SHUFFLE 洗牌
- 3.Cantor表
- 2.最大公约数和最小公倍数问题
- [Getting and Cleaning data] Project
- 1.明明的随机数(桶排序经典例题)
- 夺命雷公狗---DEDECMS----10dedecms双标签
- 最短路:我的理解--Dijkstra算法
- 很特别的一个动态规划入门教程
- 最短路径:我的理解--SPFA算法
- 双向广搜
- [git] Basic Git Command Line Reference for Windows Users
- bzoj 1951: [Sdoi2010]古代猪文
- 7. 最大公约数(辗转相除法)
- OSChina 周五乱弹 ——越污的人颜值越高 不信看图!
- GRYZ[寒假模拟赛]
- for循环的执行顺序
- [git] git Process
- bzoj 1934: [Shoi2007]Vote 善意的投票