题目链接:bzoj1968
题目大意:
求1到n各个数约数个数的和。
1≤n≤106
题解:
…我怎么这么蠢。
一直在想怎么化这个公式:
∑i=1n∑d|n1
???我真搞笑
直接for一遍 n 就好了。
对于一个数
所以就直接
好像有 O(n√) 的算法。不过没看。= =
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long LL;
int main()
{
//freopen("a.in","r",stdin);
//freopen("a.out","w",stdout);
LL n,i,ans=0;
scanf("%lld",&n);
for(int i=1;i<=n;i++) ans+=n/i;
printf("%lld\n",ans);
return 0;
}