POJ1845 求调
  • 板块题目总版
  • 楼主wangyishan
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/1/24 09:49
  • 上次更新2024/1/24 11:52:30
查看原帖
POJ1845 求调
612044
wangyishan楼主2024/1/24 09:49

题意简述:求 aba^b 的所有约数 mod  9901 \mod 9901。

#include<iostream>
using namespace std;
int a,b;
#define mod 9901 
int qpow(int a,int b){
	int ans=1,base=a;
	while(b){
		if(b&1)ans=ans*base%mod;
		base=base*base%mod;
		b>>=1;
	}
	return ans;
}
int cnt=0;
int zyy[100],znt[100];
int main(){
	int ans=1;
	cin>>a>>b;
	int t=a;
	//zyy[++cnt]=1;znt[cnt]=1;
	for(int i=2;i*i<=a;i++){
		if(t%i==0){
			zyy[++cnt]=i;
			for(;t%i==0;t/=i,znt[cnt]++);
		}
	}
	if(t!=1){
		zyy[++cnt]=t;znt[cnt]=1;
	} 
	for(int i=1;i<=cnt;i++){
		if((zyy[i]-1)%mod==0){
			ans=ans*(int)((long long)(b*znt[i]+1)%mod)%mod;
		}
		else{
			ans=ans*(qpow(zyy[i],znt[i]*b+1)-1+mod)%mod*qpow(zyy[i]-1,mod-2)%mod;
		}
	}
	cout<<ans<<endl;
	return 0;
}
2024/1/24 09:49
加载中...