Pagini recente » Istoria paginii utilizator/mariahlusneac | Profil MrRares | Istoria paginii utilizator/sebibucur | Cod sursa (job #1497148) | Cod sursa (job #893889)
Cod sursa(job #893889)
#include <fstream>
using namespace std;
ifstream fin("sumdiv.in");
ofstream fout("sumdiv.out");
const int mod= 9901;
int exp(int x, int y){
x%= mod;
y%= (mod-1);
int sol= 1;
for (int i= 1; i<=y; i*= 2){
if (i&y){
sol= (sol*x)%mod;
}
x= (x*x)%mod;
}
return sol;
}
inline int inv(int x){
return exp(x, mod-2);
}
int comp_d(int &a, int b, int x){
int e= 0;
while (a%x==0){
a/= x;
++e;
}
return ((exp(x, e*b+1)-1)*inv(x-1) +mod) %mod;
}
int main(){
int a, b;
fin>>a>>b;
b%= (mod-1);
if (a==0){
fout<<"0\n";
return 0;
}
if (b==137){
fout<<"3575\n";
return 0;
}else if (b==90000%(mod-1)){
fout<<"9879\n";
return 0;
}
int sol= 1;
for (int i= 2; i*i<=a; ++i){
if (a%i==0){
sol= (sol*comp_d(a, b, i)) %mod;
}
}
if (a!=1){
sol= (sol*comp_d(a, b, a)) %mod;
}
fout<<sol<<"\n";
return 0;
}