P4449 于神之怒加强版 (题解)

题目链接P4449 于神之怒加强版

题目大意:求

i=1nj=1mgcd(i,j)k

n,m5e6
(n<m)
ans=i=1nj=1mgcd(i,j)k

d=gcd(i,j)

ans=i=1nj=1md=1ndk(d=gcd(i,j))

i,jd

ans=d=1ni=1ndj=1mddk(gcd(i,j)=1)ans=d=1ni=1ndj=1mddke|gcd(i,j)u(e)ans=d=1ne=1ndndemdedku(e)

nn5e6

使T=deT,

ans=T=1nd|TnTmTdku(Td)

d

ans=T=1nnTmTd|Tdku(Td)

n

f(d)=dku(d)

g(T)=d|Tdku(Td)线

g(ab)=g(a)g(b)(gcd(a,b)=1)

xg(x)=d|xdku(xd)dxd1x

d=1g(x)=1ku(x)=u(x)=1

d=xg(x)=xku(1)=xk1=xk

g(x)=xk1(xprime)

g(px+1)=?(pprime),

op=px+1,g(op)=d|opdku(opd)

opd=px+1d=px

g(op)=pxk+k(d=px+1),g(op)=pxk(d=px)

g(px+1)=pxk+kpxk(pprime)

g(xprime)=?(prime|x)

g(x)g(xprime)g(xprime)=g(x)A

g(xprime)=g(x)A

prime|xxprimexprime

a1,a2,a3...anxc1,c2,c3...cn

g(x)=g(a1c1)g(a2c2)...g(ancn)

g(a1c1)g(a2c2)...g(primetotprime+1)...g(ancn)=g(a1c1)g(a2c2)...g(primetotprime)...g(ancn)A

g(primetotprime+1)=g(primetotprime)A

g(primetotprime+1)=g(primetotprime)A

(primetotprimek+kprimetotprimek)=(primetotprimekprimetotprimekk)A

A=primek

线O(n+Tn)

最后就是代码了:

#include<bits/stdc++.h>
using namespace std;
#define int long long 
const int N=5e6+5,p=1e9+7;
int n,m,k,t,x,y,z;
int s[N],f[N];
int prime[N],tot;
bool not_prime[N];
int qpow(int a,int b){
	int ans=1;
	while(b){
		if(b&1)ans=ans*a%p;
		a=a*a%p;
		b>>=1;
	}return ans;
}
void iint(){
	f[1]=1;
	for(int i=2;i<=5000000;i++){
		if(!not_prime[i])prime[++tot]=i,f[i]=(qpow(i,k)-1+p)%p;
		for(int j=1;j<=tot&&i*prime[j]<=5000000;++j){
			not_prime[i*prime[j]]=1;
			if(i%prime[j]==0){
				f[prime[j]*i]=(f[i]*((f[prime[j]]+1)%p))%p;
				break;
			}
			f[i*prime[j]]=f[i]*f[prime[j]]%p;
		}
	}
	for(int i=1;i<=5000000;i++)s[i]=(s[i-1]+f[i])%p;
}
int get(int n,int m){
	int ans=0;
	if(n>m)swap(n,m);
	for(int l=1,r=1;l<=n;l=r+1){
		r=min(n/(n/l),m/(m/l));
		ans=(ans+(s[r]-s[l-1]+p)%p*(n/l)%p*(m/l)%p)%p;
	}return ans;
}
signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	// freopen("in.in","r",stdin);
	// freopen("out.out","w",stdout);
	cin>>t>>k;
	iint();
	while(t--){
		cin>>n>>m;
		cout<<get(n,m)<<endl;
	}
	return 0;
}

润喽~~~~~

posted @   houbur  阅读(55)  评论(7编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示