//题意很明了就是求一个数n除以[1,n]的数的和;列举一下找找规律就好了;
#include<cstdio>
#include<cmath>
using namespace std;
int main ()
{
long long data,t;
scanf("%lld",&t);
for(long long cas=1;cas<=t;cas++)
{
scanf("%lld",&data);
long long k=sqrt(data),ans=0,k1,k2;///k1和k2代表在(k1,k2]间有多少个i;
for(long long i=1;i<=k;i++)
{
k1=data/i;k2=data/(i+1);
ans+=k1+(k1-k2)*i;///当前值加上i的个数;
}
if(k==data/k) ans-=k;///特判一下因为在最后的时候会加多了一个k;
///(开始以为k*k==data时减去k的值,后来还是很单纯的手动了一遍,发现是k==data/k);看到了10这个data不对;
printf("Case %lld: %lld\n",cas,ans);
}
return 0;
}
LightOJ-1245
最新推荐文章于 2021-08-04 15:54:51 发布