Pagini recente » Cod sursa (job #2954152) | Cod sursa (job #2703187) | Cod sursa (job #118292) | Cod sursa (job #2091381) | Cod sursa (job #1064327)
#include"stdafx.h"
#include <stdio.h>
#define ll long long
const ll MOD = 9901;
void gcd(ll a, ll b, ll &x, ll &y)
{
if (b == 0) {
x = 1;
y = 0;
return;
}
ll x0, y0;
gcd(b, a % b, x0, y0);
x = y0;
ll mult = (y0* ((a / b) % MOD)) % MOD;
y = ((MOD + x0 - mult) % MOD);
}
ll invers(ll x)
{
ll a, b;
gcd(x, MOD, a, b);
a = (MOD + a % MOD) % MOD;
return a;
}
ll modExp(ll b, ll e)
{
ll exp;
ll x = 1;
while (e != 0)
{
exp = e % 2;
e = e / 2;
if (exp == 1)
x = (x * b) % MOD;
b = (b * b) % MOD;
}
return x;
}
int main()
{
ll i, a, b, s=1;
freopen("sumdiv.in", "r", stdin);
freopen("sumdiv.out", "w",stdout);
scanf("%lld %lld", &a, &b);
ll nr = a;
for (i = 2; i*i <= nr; ++i)
{
ll e;
e = 0;
while (a % i == 0)
{
++e;
a = a / i;
}
if (e == 0)
continue;
ll inv = invers(i - 1) % MOD, exp = (modExp(i, b*e + 1) - 1 + MOD)% MOD;
s = (s * ((exp*inv) % MOD)) % MOD;
}
if (a > 1)
{
ll inv = invers(a - 1);
s = (s * (((modExp(a, b+1) - 1 + MOD)% MOD)*inv) % MOD) % MOD;
}
printf("%lld\n", s);
return 0;
}