题目来源:BZOJ 1968
思路:
如果从1到N依次枚举约数个数的话,肯定超时,因此要换一种思路,直接求在1-N范围内,有多少i的倍数即可(for i = 1 to N).
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <math.h>
using namespace std;
int main()
{
int N;
scanf("%d",&N);
long long ans=0;
for(int i=1;i<=N;++i)
ans+=(N/i);
printf("%lld\n",ans);
return 0;
}
ps: __int64不支持换成了long long