Pagini recente » Cod sursa (job #730283) | Cod sursa (job #546348) | Cod sursa (job #286116) | Cod sursa (job #2796335) | Cod sursa (job #789134)
Cod sursa(job #789134)
#include <cstdio>
#include <cstdlib>
#include <cmath>
using namespace std;
#define modulo 9901
int A, B, ans = 1, V[1010], P[1010], cnt;
int lgput(int N, int P)
{
int sol = 1;
N %= modulo;
while(P > 0)
{
if(P & 1) sol = (sol * N) % modulo;
N = (N * N) % modulo;
P >>= 1;
}
return sol;
}
int main()
{
freopen("sumdiv.in", "r", stdin);
freopen("sumdiv.out", "w", stdout);
int i, j;
scanf("%i %i", &A, &B);
for(i = 2; i * i <= A; i++)
{
int exp = 0;
while(A % i == 0)
exp ++, A /= i;
if(exp)
V[++cnt] = i, P[cnt] = exp * B;
}
if(A > 1)
V[++cnt] = A, P[cnt] = B;
for(i = 1; i <= cnt; i++)
if(V[i] % modulo == 1)
ans = ans * ((P[i] + 1) % modulo) % modulo;
else
ans = (ans * (lgput(V[i], P[i] + 1) - 1 + modulo) % modulo * lgput(V[i] - 1, modulo - 2)) % modulo;
if(A == 0) ans = 0;
printf("%i\n", ans);
return 0;
}