HuaJi_360 @ 2020-05-04 18:27:45
问一下:这个代码为什么最后一个点WA了?
#define reg register long long
#define MOD 9901
#include<bits/stdc++.h>
using namespace std;
long long base,power,sum=1;
long long qpow(long long x,long long p){
long long t=x,res=1;
while(p){
if(p&1)res=(res*t)%MOD;
t=(t*t)%MOD;
p>>=1;
}
return res;
}
int main(){
long long a,b,tmp,lim;
cin>>a>>b;
lim=sqrt(a);
for(reg i=2;i<=lim;i++){
if(!(a%i)){
tmp=0;
while(!(a%i)){
a/=i;tmp++;
}
power=(tmp*b+1);
if(i%MOD==1){
sum=sum*(tmp+1)%MOD;
}else{
base=i%MOD;
sum=sum*(qpow(base,power)-1)*qpow(base-1,MOD-2)%MOD;
}
}
}
if(a!=1){
power=(b+1);
if(a%MOD==1){
sum=sum*(b+1)%MOD;
}else{
base=a%MOD;
sum=sum*(qpow(base,power)-1)*qpow(base-1,MOD-2)%MOD;
}
}
cout<<sum;
return 0;
}
by hyylearn @ 2023-04-09 15:19:28
我猜是a==1或者是b==0的情况。