题解:a%b=a-[a/b]*b;
ans=n*k-sigma([k/i]*i]);
[k/i]有sqrt(k)种取值
last=k/(k/last);
#include<iostream> #include<cstdio> #include<cstring> using namespace std; typedef long long Lint; int n,m; Lint ans; int main(){ cin>>n>>m; ans=1LL*n*m; if(m>n){ int last; for(int i=1;i<=n;i=last+1){ last=min(n,m/(m/i)); ans=ans-(last-i+1)*1LL*(last+i)*(m/i)/2; } }else{ int last; for(int i=1;i<=m;i=last+1){ last=m/(m/i); ans=ans-(last-i+1)*1LL*(last+i)*(m/i)/2; } } cout<<ans<<endl; return 0; }