7-417 求sum(5) (10 分)
给出正整数 n 和 k,请计算
其中k mod i 表示 k 除以 i 的余数。
输入格式:
输入多组测试数据,每组只有一行两个整数,分别表示 n 和 k, 1≤n,k≤10^9。
输出格式:
对每一组输入,在一行中输出一个整数表示答案。
输入样例:
10 5
输出样例:
29
代码
#include<bits/stdc++.h>
using namespace std;
using namespace std;
typedef long long ll;
ll n,k;
int main(){
while(scanf("%lld%lld",&n,&k)!=EOF)
{
ll ans=n*k;
ll l= 1,r;
for(l=1 ; l<=n;l =r+1)
{
if(k/l==0) break;
r=min(k/(k/l),n);
ans-=((k/l)*(l+r)*(r-l+1)/2);
}
cout<<ans<<endl;
}
return 0;
}