Pagini recente » Arhiva de probleme | Cod sursa (job #1992057) | Cod sursa (job #3202356) | Cod sursa (job #1018314) | Cod sursa (job #3164414)
#include <iostream>
#include <fstream>
#define nl '\n'
using namespace std;
const int MOD = 9901;
ifstream fin("sumdiv.in");
ofstream fout("sumdiv.out");
int powlg(int x, int p)
{
int v = 1, a = x % MOD;
while (p)
{
if (p&1)
v = v * a % MOD;
a = a * a % MOD;
p>>=1;
}
return v;
}
inline int invMod(int x)
{
return powlg(x, MOD-2);
}
int sFact(int d, int ex)
{
int x = d % MOD;
if (x == 0) return 1;
if (x == 1) return (ex+1)%MOD;
return (powlg(d, ex+1) + MOD - 1) * invMod(d-1) % MOD;
}
int main()
{
int A, B, S = 1, p;
fin >> A >> B;
for (int d = 2; d*d <= A; d++)
if (A % d == 0)
{
p = 0;
do
{
p++;
A /= d;
}
while (A % d == 0);
S = S * sFact(d, B*p) % MOD;
}
if (A > 1) S = S * sFact(A, B) % MOD;
fout << S;
fin.close();
fout.close();
return 0;
}