• 板块P1593 因子和
  • 楼主HuaJi_360
  • 当前回复11
  • 已保存回复11
  • 发布时间2020/5/4 18:27
  • 上次更新2023/11/7 03:11:13
查看原帖
196522
HuaJi_360楼主2020/5/4 18:27

问一下:这个代码为什么最后一个点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;
}

2020/5/4 18:27
加载中...