Pagini recente » Cod sursa (job #2672124) | Cod sursa (job #2984519) | Cod sursa (job #1233613) | Cod sursa (job #2322135) | Cod sursa (job #2988207)
#include <bits/stdc++.h>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
const long long MOD = 9901;
long long a, b;
long long logPut (long long a, long long b)
{
long long rez = 1;
while (b) {
if (b & 1) {
rez = (rez * a) % MOD;
b--;
}
a = (a * a) % MOD;
b /= 2;
}
return rez;
}
long long factPrim[10], expPrim[10];
long long nrPrim;
int main()
{
f >> a >> b;
if (a == 0) {
g << 0;
return 0;
}
if (a % 2 == 0) {
factPrim[++nrPrim] = 2;
while (a % 2 == 0) {
expPrim[nrPrim]++;
a /= 2;
}
}
for (long long i = 3; i * i <= a; ++i) {
if (a % i == 0) {
factPrim[++nrPrim] = i;
while (a % i == 0) {
expPrim[nrPrim]++;
a /= i;
}
}
}
long long sum = 1;
for (long long i = 1; i <= nrPrim; ++i) {
expPrim[i] *= b;
sum = ((sum * (logPut(factPrim[i], expPrim[i] + 1) - 1) ) / (factPrim[i] - 1) ) % MOD;
}
g << sum;
g.close();
f.close();
return 0;
}