P1593 因子和

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的情况。


上一页 |