您的位置:首页 > 其它

uva 11526计算n/1+n/2+...+n/n(整除)

2012-08-04 20:02 381 查看
找到n/i结果相同的,跳过并累加

#include<iostream>

#include<stdio.h>

using namespace std;

typedef long long LL;

LL H(LL n)

{

if(n<=0) return 0;

LL ret=n;

LL tmp;

for(LL i=2;i<=n;i++)

{

ret+=(tmp=n/i);

ret+=tmp*(n/tmp-i);

i=n/tmp;

}

return ret;

}

int main()

{

int t;

LL n;

scanf("%d",&t);

while(t--)

{

cin>>n;

cout<<H(n)<<endl;

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: