https://www.lydsy.com/JudgeOnline/problem.php?id=2956
Not so easy
Number Theory Block
As for how to block
I don't want to say there
Today I'm tired
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll M=19940417;
ll inv6=3323403;
ll quickmod(ll a,ll b,ll m){
ll ans=1;
while(b){
if(b&1)ans=(ans*a)%m;
b>>=1;
a=a*a%m;
}
return ans;
}
ll inv(ll a,ll p){
return quickmod(a, p-2, p);
}
ll solve(ll x){
ll ans=x*x;
ll a=1;
while(a<=x){
ll b=x/(x/a);
ans-=(x/a)*(a+b)*(b-a+1)/2;
a=b+1;
}
return ans%M;
}
ll sum2(ll x){
return x*(x+1)%M*(2*x+1)%M*inv6%M;
}
ll C(ll x,ll y){
--x;
return (sum2(y)-sum2(x)+M)%M;
}
int main(){
ll n,m;
cin>>n>>m;
ll ans=solve(n)*solve(m)%M;
ll x=min(n,m);
ll a=1;
ll ans2=0;
while(a<=x){
ll b=min(n/(n/a),m/(m/a));
ll c=n/a;
ll d=m/a;
ans2=(ans2+n*m%M*(b-a+1)%M+C(a,b)%M*c*d%M-(m*c+n*d)%M*(((a+b)*(b-a+1)/2)%M)%M+M)%M;
a=b+1;
}
cout<<(ans-ans2+M)%M<<endl;
}
Code of AC: