BZOJ2693
http://www.lydsy.com/JudgeOnline/problem.php?id=2693
#include<cstdio>
typedef unsigned long long ll;
inline int min(int a,int b){
return a<b?a:b;
}
ll ans,rev;
const int maxn=1e7;
const ll mod=1e8+9;
int pr[maxn];
bool ip[maxn+1];
ll f[maxn+1];
int n,m;
int T;
inline void shai_fa(){
f[1]=1ll;
for(register int i=2;i<=maxn;++i){
if(!ip[i])
f[pr[++pr[0]]=i]=mod-i+1;
for(register int j=1;j<=pr[0]&&1ll*pr[j]*i<=maxn;++j){
ip[i*pr[j]]=1;
if(i%pr[j]==0){
f[i*pr[j]]=f[i];
break;
}
f[i*pr[j]]=1ll*f[i]*f[pr[j]]%mod;
}
}
for(register int i=2;i<=maxn;++i)
f[i]=(1ll*f[i]*i%mod+1ll*f[i-1])%mod;
}
inline ll fp(ll a,ll b){
ll ret=1ll;
while(b){
if(b&1ll)ret=1ll*ret*a%mod;
b>>=1ll;
a=1ll*a*a%mod;
}
return ret;
}
int main(){
shai_fa();
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&m);
ans=0;
for(register int i=1,pos;i<=min(n,m);i=pos+1){
pos=min(n/(n/i),m/(m/i));
ans=(ans+1ll*(1ll*(n/i+1)*(n/i)/2)%mod*(1ll*(m/i+1)*(m/i)/2%mod)%mod*(f[pos]-f[i-1]+mod)%mod)%mod;
}
printf("%lld\n",ans);
}
return 0;
}

浙公网安备 33010602011771号