Pagini recente » Cod sursa (job #1463307) | Cod sursa (job #1360754) | Cod sursa (job #884100) | Cod sursa (job #499081) | Cod sursa (job #1766973)
#include <iostream>
#include <cstdio>
#define MOD 9901
using namespace std;
int rise(int x, int p)
{
int nr = 1;
for (int i = 0; p>>i; i++) {
if ((p>>i) & 1)
nr = (1LL * nr * x) % MOD;
x = (1LL*x*x) % MOD;
}
return nr;
}
int invers(int x)
{
return rise(x, MOD-2);
}
int a, b;
int p[100], e[100], nq;
void citire()
{
scanf("%d %d", &a, &b);
for (int i = 2; i*i <= a; i++)
if (a % i == 0) {
p[++nq] = i;
while (a % i == 0) {
e[nq]++;
a /= i;
}
}
if (a > 1) {
p[++nq] = a;
e[nq] = 1;
}
}
void solve()
{
int rez = 1;
for (int i = 1; i <= nq; i++)
rez = (1LL*rez*(rise(p[i], e[i]*b+1)-1)*invers(p[i]-1))%MOD;
printf("%d", rez);
}
int main()
{
freopen("sumdiv.in", "r", stdin);
freopen("sumdiv.out", "w", stdout);
citire();
solve();
return 0;
}