题面??
我这个咕儿终于在csp初赛前夕开始学习数论了!
我是绝对不会承认之前不学数学是因为去年刚开始学OI的时候就跟yyq他们学莫比乌斯反演然后自闭的
分析
对于k mod i,可以表示为$k-(k/i)*i$
所以答案就为
$$sum_{i=1}^n k-(k/i)i$$
$$=nk-sum_{i=1}^n (k/i)i$$
$sum_{i=1}^n (k/i)i$这个东西可以用整除分块优化加上高斯求和搞(说得很高级似的
剩下的就很容易了
哇卡卡卡我总算学会用数学公式了
Code
#include<cstdio>
#include<algorithm>
using namespace std;
long long ans,n,k,l,r;
int main()
{
scanf("%lld%lld",&n,&k);
while(r<=n)
{
l=r+1;if(k/l==0)break;r=k/(k/l);
ans+=1ll*(l+min(n,r))*(min(r,n)-l+1)*(k/l)/2;
}
printf("%lld
",n*k-ans);
}