luogu P3768 简单的数学题

题目描述

今有 n , p ∈ N ∗ n,p\in\N^* n,pN,求 ∑ i = 1 n ∑ j = 1 n i j ⋅ gcd ⁡ ( i , j ) \sum_{i=1}^{n}{\sum_{j=1}^{n}{ij·\gcd(i,j)}} i=1nj=1nijgcd(i,j)
n ≤ 1 0 10 n\leq10^{10} n1010

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=1nj=1nijgcd(i,j)=k=1ni=1nj=1nij[gcd(i,j)=k]=k=1ni=1knj=1knkij[gcd(i,j)=k]=k=1ni=1knj=1knk3ij[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] dgcd(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=1ni=1knj=1knk3ijdgcd(i,j)μ(d)=k=1ni=1knj=1knk3ijd=1knμ(d)[dgcd(i,j)]=k=1nd=1kn(i=1knj=1knij)k3μ(d)[dgcd(i,j)]=k=1nd=1kn(i=1kdnj=1kdnij)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=1xj=1xij=[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=1nk3d=1knF(kdn)μ(d)d2=k=1nk3D=1knF(Dn)μ(d)(kD)2=k=1nkDDnF(Dn)μ(d)kD=D=1nkDF(Dn)μ(d)kD=D=1nF(Dn)D[kDμ(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=1nD2F(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=1xi2φ(i) f ∗ g = h f*g=h fg=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=1nh(i)d=2ng(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=1nh(i)d=2nd2S(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=1nF(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 卷积的区别!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值