88pts求助
查看原帖
88pts求助
1191031
majingxuan123楼主2024/7/6 20:10
#include<iostream>
using namespace std;
int a,b;
int p[20],c[20],m;
void divide(int x){
	for(int i=2;i<=x/i;i++){
		if(x%i==0){
			p[++m]=i;
			while(x%i==0)x/=i,c[m]++;
		}
	}
	if(x>1)p[++m]=x,c[m]=1;
}
int mod=9901;
int power(int a,long long b){
	int ans=1;
	while(b){
		if(b&1)ans=(long long)ans*a%mod;
		a=(long long)a*a%mod;
		b>>=1;
	}
	return ans;
}
int main(){
	cin>>a>>b;
	if(a==0){
		cout<<0;
		return 0;
	}
	divide(a);
	int ans=1;
	for(int i=1;i<=m;i++){
		if(!(p[i]-1)%mod){
			ans=((long long)b*c[i]+1)%mod*ans%mod;
		}	
		else{
			int x=power(p[i],(long long)b*c[i]+1);
			x=(x-1+mod)%mod;
			int y=power(p[i]-1,mod-2);
			ans=(long long)ans*x%mod*y%mod;
		}
	}
	cout<<ans;
	return 0;
}
2024/7/6 20:10
加载中...