BZOJ1968 [Ahoi2005]COMMON 约数研究 数论

时间:2023-03-09 16:32:23
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;
}