Pagini recente » Cod sursa (job #3327215) | Cod sursa (job #3334789) | Cod sursa (job #3312318) | Cod sursa (job #3312851) | Cod sursa (job #3323123)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("sumdiv.in");
ofstream cout("sumdiv.out");
vector<pair<int,int>> fact;
vector<pair<int,int>> descomp(int n){
vector<pair<int,int>> res;
int d=2;
while(d*d<=n){
int exp=0;
while(n%d==0){
exp++;
n/=d;
}
if(exp>0){
res.push_back({d,exp});
}
d++;
}
if(n>1){
res.push_back({n,1});
}
return res;
}
#define MOD 9901
long long modPow(long long a,int exp){
long long res=1;
while(exp){
if(exp&1){
res=(res*a)%MOD;
}
a=(a*a)%MOD;
exp/=2;
}
return res;
}
long long invMod(long long a){
return modPow(a,MOD-2);
}
int main(){
int a,b;
long long sumdiv=1;
cin>>a>>b;
fact=descomp(a);
for(auto &f:fact){
f.second*=b;
sumdiv=(sumdiv*invMod(f.first-1))%MOD;
sumdiv=(sumdiv*(modPow(f.first,f.second+1)-1+MOD))%MOD;
}
cout<<sumdiv;
return 0;
}