BZOJ1968 [Ahoi2005]COMMON 约数研究 数论
欢迎访问~原文出处——博客园-zhouzhendong
去博客园看该题解
题目传送门 - BZOJ1968
题意概括
求 ΣF(i) (1<=i<=n)N<=1000000
F(i)是i的约数个数
题解
换一个角度思考,可以把原问题转化为:
对于每一i,在1~n中有多少个倍数,所有的个数和就是答案。
那么,ΣF(i) = ∑ floor(n/i)
代码
#include <bits/stdc++.h> int n,ans=0; int main(){ scanf("%d",&n); for (int i=1;i<=n;i++) ans+=floor(n*1.0/i); printf("%d",ans); return 0; }