https://vjudge.net/problem/UVA-1363
n
题意:求 Σ k%i
i=1
除法分块
如果 k/i==k/(i+1)=p
那么 k%(i+1)=k-(i+1)*p= k-i*p-p = k%i-p
所以 商相同时,余数为等差数列
我不知道为什么交到vjudge一直WA,网上搜的题解交上去也WA
#include<cmath>
#include<cstdio>
using namespace std;
int main()
{
int n,k,i,j,p,s,t;
long long ans;
while(scanf("%d%d",&n,&k)!=EOF)
{
ans=;
p=k; i=;
while(i<=n)
{
if(!p)
{
ans+=1ll*k*(n-i+);
break;
}
j=k/p;
s=k%i; t=k%j;
ans+=1ll*(s+t)*(j-i+)/;
i=j+;
p=k/i;
}
printf("%lld\n",ans);
}
}