Pagini recente » Cod sursa (job #1320124) | Cod sursa (job #54891) | Cod sursa (job #619025) | Cod sursa (job #2145223) | Cod sursa (job #1087481)
#include <cstdio>
#include <cstdlib>
#include <algorithm>
using namespace std;
const int MOD = 9901;
int A, B, Ans = 1, Exp;
int LgPow(int N, int P)
{
int Now = 1;
N %= MOD;
while(P)
{
if(P & 1) Now = (1LL * Now * N) % MOD;
N = (1LL * N * N) % MOD;
P >>= 1;
}
return Now % MOD;
}
int main()
{
freopen("sumdiv.in", "r", stdin);
freopen("sumdiv.out", "w", stdout);
scanf("%i %i", &A, &B);
for(int i = 2; 1LL * i * i <= A; ++ i)
if(A % i == 0)
{
Exp = 0;
while(A % i == 0) Exp ++, A /= i;
Exp *= B;
if(i % MOD == 1) Ans = (1LL * Ans * (Exp + 1)) % MOD;
else Ans = (1LL * Ans * (LgPow(i, Exp + 1) - 1 + MOD) % MOD * LgPow(i - 1, MOD - 2)) % MOD;
}
if(A > 1)
{
if(A % MOD == 1) Ans = (1LL * Ans * (B + 1)) % MOD;
else Ans = (1LL * Ans * (LgPow(A, B + 1) - 1 + MOD) % MOD * LgPow(A - 1, MOD - 2)) % MOD;
}
printf("%i\n", Ans);
}