Pagini recente » Cod sursa (job #2965739) | Cod sursa (job #1044638) | Cod sursa (job #2908059) | Cod sursa (job #708947) | Cod sursa (job #1341321)
#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;
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++) {
rez *= put(DIV[i], EXP[i]+1) + MOD-1;
rez %= MOD;
rez *= inv((DIV[i] + MOD - 1)%MOD);
rez %= MOD;
}
fout<<rez%MOD;
return 0;
}