链接
http://poj.org/problem?id=2800
题解
∑ i = 1 n ( k m o d    i ) = ∑ i = 1 n ( k − i ⌊ k i ⌋ ) \sum_{i=1}^n(k\mod i)=\sum_{i=1}^n(k-i\lfloor{k\over i}\rfloor) i=1∑n(kmodi)=i=1∑n(k−i⌊ik⌋)
代码
//数学小题
#include <cstdio>
#include <algorithm>
#define ll long long
using namespace std;
ll ans, n, k;
int main()
{
ll i, last;
scanf("%lld%lld",&n,&k);
ans=n*k;
for(i=1;i<=min(n,k);i=last+1)
{
last=min(n,k/(k/i));
ans-=(last+i)*(last-i+1)/2*(k/i);
}
printf("%lld",ans);
return 0;
}