AcWing 97. 约数之和
原题链接
中等
作者:
吴鑫
,
2021-02-15 20:45:04
,
所有人可见
,
阅读 416
#include<iostream>
#include<algorithm>
#include<unordered_map>
#define mod 9901
using namespace std;
typedef long long ll;
unordered_map<int,int>tt;
int a,b;
ll qmi(int a,ll b){
ll res=1;
for(;b;b>>=1){
if(b&1) res=(ll)res*a%mod;
a=(ll)a*a%mod;
}
return res;
}
int main(){
cin>>a>>b;
if(a==0){
cout<<0;
return 0;
}
for(int i=2;i<=a/i;i++){
while(a%i==0){
a/=i;
tt[i]++;
}
}
if(a>1) tt[a]++;
ll res=1;
for(auto i:tt){
int x=i.first,y=i.second;
if((x-1)%mod==0)
res=((ll)b*y+1)%mod*res%mod;
else
res=(ll)res*(qmi(x,(ll)y*b+1)-1)%mod*qmi(x-1,(ll)mod-2)%mod;
res=(res+mod)%mod;
}
cout<<res;
return 0;
}