luogu P3768 简单的数学题

题目描述

今有 n,pNn,p\in\N^*,求i=1nj=1nijgcd(i,j)\sum_{i=1}^{n}{\sum_{j=1}^{n}{ij·\gcd(i,j)}}
n1010n\leq10^{10}

Solution

S(n)=i=1nj=1nijgcd(i,j)=k=1ni=1nj=1nij[gcd(i,j)=k]=k=1ni=1nkj=1nkkij[gcd(i,j)=k]=k=1ni=1nkj=1nkk3ij[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}
因为μI=ϵ\mu*I=\epsilon所以dgcd(i,j)μ(d)=[gcd(i,j)=1]\sum_{d|\gcd(i,j)}\mu(d)=[\gcd(i,j)=1]
S(n)=k=1ni=1nkj=1nkk3ijdgcd(i,j)μ(d)=k=1ni=1nkj=1nkk3ijd=1nkμ(d)[dgcd(i,j)]=k=1nd=1nk(i=1nkj=1nkij)k3μ(d)[dgcd(i,j)]=k=1nd=1nk(i=1nkdj=1nkdij)k3d2μ(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}
F(x)=i=1xj=1xij=[x(x+1)2]2F(x)=\sum_{i=1}^{x}\sum_{j=1}^{x}ij=[\frac{x(x+1)}2]^2D=kdD=kd
S(n)=k=1nk3d=1nkF(nkd)μ(d)d2=k=1nk3D=1nkF(nD)μ(d)(Dk)2=k=1nkDDnF(nD)μ(d)kD=D=1nkDF(nD)μ(d)kD=D=1nF(nD)D[kDμ(Dk)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}
因为μid=φ\mu*id=\varphi所以
S(n)=D=1nD2F(nD)φ(D)S(n)=\sum_{D=1}^{n}D^2F(\lfloor\frac nD\rfloor)\varphi(D)
注意到 ff 里有一项是 φ\varphi,考虑φI=id\varphi*I=idf(x)=x2φ(x),g(x)=id2(x)=x2,h(x)=x3S(x)=i=1xi2φ(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}fg=hf*g=h
根据 杜教筛 的套路,得g(1)S(n)=i=1nh(i)d=2ng(d)S(nd)g(1)S'(n)=\sum_{i=1}^{n}h(i)-\sum_{d=2}^{n}g(d)·S'(\lfloor\frac nd\rfloor)S(n)=i=1nh(i)d=2nd2S(nd)S'(n)=\sum_{i=1}^{n}h(i)-\sum_{d=2}^{n}d^2S'(\lfloor\frac nd\rfloor)S(n)=D=1nF(nD)S(D)S(n)=\sum_{D=1}^{n}F(\lfloor\frac nD\rfloor)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 卷积的区别!!!

posted @ 2019-07-04 15:09  TeacherDai  阅读(159)  评论(0)    收藏  举报