Pagini recente » Cod sursa (job #1428471) | Cod sursa (job #3255860) | Cod sursa (job #2336834) | Cod sursa (job #1485892) | Cod sursa (job #1062251)
#include<fstream>
#define MOD 9901
using namespace std;
ifstream fin("sumadiv.in");
ofstream fout("sumadiv.out");
long A, B, sdiv=1, rez;
long f[100], expo[100], N, d, i;
void putere(long b, long e)
{
while (e)
{
if (e % 2 == 0)
{
e /= 2;
b = (b*b)%MOD;
}
else
{
rez = (rez*b)%MOD;
e--;
}
}
}
void desc_fact(long x)
{
long d = 2;
if (x%d == 0)
{
N++;
f[N] = d;
while (x%d == 0)
{
++expo[N];
x /= d;
}
}
++d;
while (d*d <= x)
if (x%d != 0)
d += 2;
else
{
N++;
f[N] = d;
while (x%d == 0)
{
expo[N]++;
x /= d;
}
d += 2;
}
if (x > 1)
{
N++;
expo[N] = 1;
f[N] = x;
}
}
int main()
{
fin >> A >> B;
desc_fact(A);
for (i = 1; i <= N; ++i)
expo[i] *= B;
for (i = 1; i <= N; ++i)
{
rez = 1;
putere(f[i], expo[i]+1);
sdiv = ((rez+MOD-1)%MOD*sdiv)%MOD;
rez = 1;
putere(f[i] - 1, MOD - 2);
sdiv = (rez*sdiv)%MOD;
}
fout << sdiv%MOD << '\n';
return 0;
}