Pagini recente » Cod sursa (job #2889108) | Cod sursa (job #3274894) | Cod sursa (job #2914421) | Cod sursa (job #3004263) | Cod sursa (job #2931059)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("sumdiv.in");
ofstream out("sumdiv.out");
#define MaxDiv 10
#define MOD 9901
int base[MaxDiv+1];
int exp[MaxDiv+1];
int nrp;
void desc(int a,int b){
int d=2;
while(d*d<=a){
if(a%d==0){
nrp++;
base[nrp]=d;
while(a%d==0){
a/=d;
exp[nrp]+=b;
}
}
d++;
}
if(a>1){
nrp++;
base[nrp]=a;
exp[nrp]=b;
}
}
int fast_power(int a,int n){
a%=MOD;
int prod=1;
while(n>0){
if(n%2==1){
prod=prod*a%MOD;
}
a=a*a%MOD;
n/=2;
}
return prod;
}
int invers_modular(int a){
return fast_power(a,MOD-2);
}
int main(){
int a,b;
in>>a>>b;
desc(a,b);
int s=1;
for(int i=1;i<=nrp;i++){
if(fast_power(base[i],exp[i]+1)!=1){
s=s*(fast_power(base[i],exp[i]+1)-1+MOD)%MOD;
s=s*invers_modular(base[i]-1)%MOD;
}
else{
s=s*(exp[i]+1)%MOD;
}
}
out<<s;
}