Pagini recente » Cod sursa (job #370005) | Cod sursa (job #625014) | Cod sursa (job #380893) | Cod sursa (job #117694) | Cod sursa (job #1341361)
#include<fstream>
using namespace std;
typedef int64_t var;
ifstream fin("sumdiv.in");
ofstream fout("sumdiv.out");
const var MOD = 9901;
var DIV[200], EXP[200];
var put(var b, var e) {
if(e == 0) return 1;
if(e%2 == 1) {
return ( b * put(b, e-1) )%MOD;
} else {
return ( put(( b*b )%MOD, e/2) )%MOD;
}
}
inline var inv(var b) {
return ( put(b, MOD-2) )%MOD;
}
int main() {
var a, b, i=0, d, ndiv;
fin>>a>>b;
if(a == 0) {
fout<<0;
return 0;
}
if(b == 0) {
fout<<1;
return 0;
}
for(var d=2; d*d<=a; d++) {
if(a%d==0) {
DIV[++i] = d;
}
while(a%d==0) {
EXP[i] ++;
a /= d;
}
}
if(a>1) {
DIV[++i] = a;
EXP[i] = 1;
}
ndiv = i;
for(i=1; i<=ndiv; i++) {
EXP[i] *= b;
}
var rez = 1;
for(var i=1; i<=ndiv; i++) {
if(DIV[i] % MOD != 1) {
rez *= put(DIV[i], EXP[i]+1) + MOD-1;
rez %= MOD;
rez *= inv((DIV[i] - 1)%MOD);
rez %= MOD;
} else {
rez *= EXP[i]+1;
rez %= MOD;
}
}
fout<<rez%MOD;
return 0;
}