题意简述:求 ab 的所有约数 mod9901。
#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;
}