题目描述
今有
n
,
p
∈
N
∗
n,p\in\N^*
n,p∈N∗,求
∑
i
=
1
n
∑
j
=
1
n
i
j
⋅
gcd
(
i
,
j
)
\sum_{i=1}^{n}{\sum_{j=1}^{n}{ij·\gcd(i,j)}}
i=1∑nj=1∑nij⋅gcd(i,j)
n
≤
1
0
10
n\leq10^{10}
n≤1010。
Solution
设
S
(
n
)
=
∑
i
=
1
n
∑
j
=
1
n
i
j
⋅
gcd
(
i
,
j
)
=
∑
k
=
1
n
∑
i
=
1
n
∑
j
=
1
n
i
j
⋅
[
gcd
(
i
,
j
)
=
k
]
=
∑
k
=
1
n
∑
i
=
1
⌊
n
k
⌋
∑
j
=
1
⌊
n
k
⌋
k
i
j
⋅
[
gcd
(
i
,
j
)
=
k
]
=
∑
k
=
1
n
∑
i
=
1
⌊
n
k
⌋
∑
j
=
1
⌊
n
k
⌋
k
3
i
j
[
gcd
(
i
,
j
)
=
1
]
\begin{aligned}S(n)&=\sum_{i=1}^{n}\sum_{j=1}^{n}ij·\gcd(i,j)\\ &=\sum_{k=1}^{n}\sum_{i=1}^{n}\sum_{j=1}^{n}ij·[\gcd(i,j)=k]\\ &=\sum_{k=1}^{n}\sum_{i=1}^{\lfloor\frac nk\rfloor}\sum_{j=1}^{\lfloor\frac nk\rfloor}kij·[\gcd(i,j)=k]\\ &=\sum_{k=1}^{n}\sum_{i=1}^{\lfloor\frac nk\rfloor}\sum_{j=1}^{\lfloor\frac nk\rfloor}k^3ij[\gcd(i,j)=1]\end{aligned}
S(n)=i=1∑nj=1∑nij⋅gcd(i,j)=k=1∑ni=1∑nj=1∑nij⋅[gcd(i,j)=k]=k=1∑ni=1∑⌊kn⌋j=1∑⌊kn⌋kij⋅[gcd(i,j)=k]=k=1∑ni=1∑⌊kn⌋j=1∑⌊kn⌋k3ij[gcd(i,j)=1]
因为
μ
∗
I
=
ϵ
\mu*I=\epsilon
μ∗I=ϵ所以
∑
d
∣
gcd
(
i
,
j
)
μ
(
d
)
=
[
gcd
(
i
,
j
)
=
1
]
\sum_{d|\gcd(i,j)}\mu(d)=[\gcd(i,j)=1]
d∣gcd(i,j)∑μ(d)=[gcd(i,j)=1]
即
S
(
n
)
=
∑
k
=
1
n
∑
i
=
1
⌊
n
k
⌋
∑
j
=
1
⌊
n
k
⌋
k
3
i
j
⋅
∑
d
∣
gcd
(
i
,
j
)
μ
(
d
)
=
∑
k
=
1
n
∑
i
=
1
⌊
n
k
⌋
∑
j
=
1
⌊
n
k
⌋
k
3
i
j
⋅
∑
d
=
1
⌊
n
k
⌋
μ
(
d
)
⋅
[
d
∣
gcd
(
i
,
j
)
]
=
∑
k
=
1
n
∑
d
=
1
⌊
n
k
⌋
(
∑
i
=
1
⌊
n
k
⌋
∑
j
=
1
⌊
n
k
⌋
i
j
)
⋅
k
3
⋅
μ
(
d
)
⋅
[
d
∣
gcd
(
i
,
j
)
]
=
∑
k
=
1
n
∑
d
=
1
⌊
n
k
⌋
(
∑
i
=
1
⌊
n
k
d
⌋
∑
j
=
1
⌊
n
k
d
⌋
i
j
)
⋅
k
3
d
2
⋅
μ
(
d
)
\begin{aligned}S(n)&=\sum_{k=1}^{n}\sum_{i=1}^{\lfloor\frac nk\rfloor}\sum_{j=1}^{\lfloor\frac nk\rfloor}k^3ij·\sum_{d|\gcd(i,j)}\mu(d)\\ &=\sum_{k=1}^{n}\sum_{i=1}^{\lfloor\frac nk\rfloor}\sum_{j=1}^{\lfloor\frac nk\rfloor}k^3ij·\sum_{d=1}^{\lfloor\frac nk\rfloor}\mu(d)·[d|\gcd(i,j)]\\ &=\sum_{k=1}^{n}\sum_{d=1}^{\lfloor\frac nk\rfloor}(\sum_{i=1}^{\lfloor\frac nk\rfloor}\sum_{j=1}^{\lfloor\frac nk\rfloor}ij)·k^3·\mu(d)·[d|\gcd(i,j)]\\ &=\sum_{k=1}^{n}\sum_{d=1}^{\lfloor\frac nk\rfloor}(\sum_{i=1}^{\lfloor\frac n{kd}\rfloor}\sum_{j=1}^{\lfloor\frac n{kd}\rfloor}ij)·k^3d^2·\mu(d)\end{aligned}
S(n)=k=1∑ni=1∑⌊kn⌋j=1∑⌊kn⌋k3ij⋅d∣gcd(i,j)∑μ(d)=k=1∑ni=1∑⌊kn⌋j=1∑⌊kn⌋k3ij⋅d=1∑⌊kn⌋μ(d)⋅[d∣gcd(i,j)]=k=1∑nd=1∑⌊kn⌋(i=1∑⌊kn⌋j=1∑⌊kn⌋ij)⋅k3⋅μ(d)⋅[d∣gcd(i,j)]=k=1∑nd=1∑⌊kn⌋(i=1∑⌊kdn⌋j=1∑⌊kdn⌋ij)⋅k3d2⋅μ(d)
令
F
(
x
)
=
∑
i
=
1
x
∑
j
=
1
x
i
j
=
[
x
(
x
+
1
)
2
]
2
F(x)=\sum_{i=1}^{x}\sum_{j=1}^{x}ij=[\frac{x(x+1)}2]^2
F(x)=i=1∑xj=1∑xij=[2x(x+1)]2
D
=
k
d
D=kd
D=kd
则
S
(
n
)
=
∑
k
=
1
n
k
3
∑
d
=
1
⌊
n
k
⌋
F
(
⌊
n
k
d
⌋
)
μ
(
d
)
⋅
d
2
=
∑
k
=
1
n
k
3
⋅
∑
D
=
1
⌊
n
k
⌋
F
(
⌊
n
D
⌋
)
μ
(
d
)
⋅
(
D
k
)
2
=
∑
k
=
1
n
∑
k
∣
D
D
≤
n
F
(
⌊
n
D
⌋
)
μ
(
d
)
⋅
k
D
=
∑
D
=
1
n
∑
k
∣
D
F
(
⌊
n
D
⌋
)
μ
(
d
)
⋅
k
D
=
∑
D
=
1
n
F
(
⌊
n
D
⌋
)
D
⋅
[
∑
k
∣
D
μ
(
D
k
)
k
]
\begin{aligned}S(n)&=\sum_{k=1}^{n}k^3\sum_{d=1}^{\lfloor\frac nk\rfloor}F(\lfloor\frac n{kd}\rfloor)\mu(d)·d^2\\ &=\sum_{k=1}^{n}k^3·\sum_{D=1}^{\lfloor\frac nk\rfloor}F(\lfloor\frac nD\rfloor)\mu(d)·(\frac Dk)^2\\ &=\sum_{k=1}^{n}\sum_{k|D}^{D\leq n}F(\lfloor\frac nD\rfloor)\mu(d)·kD\\ &=\sum_{D=1}^{n}\sum_{k|D}F(\lfloor\frac nD\rfloor)\mu(d)·kD\\ &=\sum_{D=1}^{n}F(\lfloor\frac nD\rfloor)D·[\sum_{k|D}\mu(\frac Dk)k]\end{aligned}
S(n)=k=1∑nk3d=1∑⌊kn⌋F(⌊kdn⌋)μ(d)⋅d2=k=1∑nk3⋅D=1∑⌊kn⌋F(⌊Dn⌋)μ(d)⋅(kD)2=k=1∑nk∣D∑D≤nF(⌊Dn⌋)μ(d)⋅kD=D=1∑nk∣D∑F(⌊Dn⌋)μ(d)⋅kD=D=1∑nF(⌊Dn⌋)D⋅[k∣D∑μ(kD)k]
因为
μ
∗
i
d
=
φ
\mu*id=\varphi
μ∗id=φ所以
S
(
n
)
=
∑
D
=
1
n
D
2
F
(
⌊
n
D
⌋
)
φ
(
D
)
S(n)=\sum_{D=1}^{n}D^2F(\lfloor\frac nD\rfloor)\varphi(D)
S(n)=D=1∑nD2F(⌊Dn⌋)φ(D)
注意到
f
f
f 里有一项是
φ
\varphi
φ,考虑
φ
∗
I
=
i
d
\varphi*I=id
φ∗I=id设
f
(
x
)
=
x
2
φ
(
x
)
,
g
(
x
)
=
i
d
2
(
x
)
=
x
2
,
h
(
x
)
=
x
3
S
′
(
x
)
=
∑
i
=
1
x
i
2
φ
(
i
)
\begin{aligned}f(x)&=x^2\varphi(x),\\g(x)&=id^2(x)=x^2,\\ h(x)&=x^3\\S'(x)&=\sum_{i=1}^{x}{i^2\varphi(i)}\end{aligned}
f(x)g(x)h(x)S′(x)=x2φ(x),=id2(x)=x2,=x3=i=1∑xi2φ(i)则
f
∗
g
=
h
f*g=h
f∗g=h
根据 杜教筛 的套路,得
g
(
1
)
S
′
(
n
)
=
∑
i
=
1
n
h
(
i
)
−
∑
d
=
2
n
g
(
d
)
⋅
S
′
(
⌊
n
d
⌋
)
g(1)S'(n)=\sum_{i=1}^{n}h(i)-\sum_{d=2}^{n}g(d)·S'(\lfloor\frac nd\rfloor)
g(1)S′(n)=i=1∑nh(i)−d=2∑ng(d)⋅S′(⌊dn⌋)即
S
′
(
n
)
=
∑
i
=
1
n
h
(
i
)
−
∑
d
=
2
n
d
2
S
′
(
⌊
n
d
⌋
)
S'(n)=\sum_{i=1}^{n}h(i)-\sum_{d=2}^{n}d^2S'(\lfloor\frac nd\rfloor)
S′(n)=i=1∑nh(i)−d=2∑nd2S′(⌊dn⌋)
S
(
n
)
=
∑
D
=
1
n
F
(
⌊
n
D
⌋
)
S
′
(
D
)
S(n)=\sum_{D=1}^{n}F(\lfloor\frac nD\rfloor)S'(D)
S(n)=D=1∑nF(⌊Dn⌋)S′(D)
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<map>
#define reg register
const int MAXN=5000010;
typedef long long ll;
ll mod,n;
bool vis[MAXN+10];
int p[MAXN+10];
ll phi[MAXN+10];
int len=0;
ll S_f[MAXN+10];
ll inv6;
std::map<ll,ll> mp;
ll ksm(ll x,ll p){
if(!p) return 1;
ll c=ksm(x,p/2)%mod;
if(p&1) return c*c%mod*x%mod;
return c*c%mod;
}
ll F(ll x){
x%=mod;
return x*(x+1)/2%mod*(x*(x+1)/2%mod)%mod;
}
void init(){
memset(vis,1,sizeof(vis));vis[1]=0;
memset(p,0,sizeof(p));len=0;phi[1]=1;
for(reg int i=2;i<=MAXN;++i){
if(vis[i]){
p[++len]=i;
phi[i]=(i-1)%mod;
}
for(reg int j=1;(j<=len)&&(i*p[j]<=MAXN);++j){
vis[i*p[j]]=0;
if(i%p[j])
phi[i*p[j]]=phi[i]*(p[j]-1)%mod;
else{
phi[i*p[j]]=phi[i]*p[j]%mod;
break;
}
}
}
S_f[0]=0;
for(reg int i=1;i<=MAXN;++i)
S_f[i]=(S_f[i-1]+phi[i]*i%mod*i%mod)%mod;
}
ll Sq(ll x){
x%=mod;
return x*(x+1)%mod*(x+x+1)%mod*inv6%mod;
}
ll S(ll x){
if(x<MAXN) return S_f[x];
if(mp[x]) return mp[x];
ll sum=0;
for(reg ll l=2,r;l<=x;l=r+1){
r=x/(x/l);
sum=(sum+S(x/l)*(Sq(r)-Sq(l-1)+mod)%mod)%mod;
}
return mp[x]=((F(x)-sum+mod)%mod);
}
int main(){
scanf("%lld%lld",&mod,&n);
init();inv6=ksm(6,mod-2);
ll ans=0;
for(reg ll l=1,r;l<=n;l=r+1){
r=n/(n/l);
ans=(ans+F(n/l)*(S(r)-S(l-1)+mod)%mod)%mod;
}
printf("%lld",ans);
}
注意点乘和 Dirichlet 卷积的区别!!!