Pagini recente » Cod sursa (job #1815242) | Cod sursa (job #5311) | Cod sursa (job #508600) | Cod sursa (job #1673831) | Cod sursa (job #3039216)
#include <fstream>
using namespace std;
ifstream f("sumdiv.in");
ofstream g("sumdiv.out");
int MOD = 9901;
int pow(int x, int p)
{
/*x = x % MOD;
int rez = 1;
int r;
while(y != 0)
{
r = y % 2;
if(r == 1)
{
rez = (rez * x) % MOD;
}
x = (x * x) % MOD;
y = y / 2;
}
return rez % MOD;*/
int v = 1, a = x % MOD;
while(p)
{
if(p & 1)
v = v * a % MOD;
a = a * a % MOD;
p >>= 1;
}
return v;
}
void gcd(int a, int b, long long *x, long long *y)
{
if(b == 0)
{
*x = 1;
*y = 0;
}
else
{
long long x0, y0;
gcd(b, a%b, &x0, &y0);
*x = y0;
*y = x0 - (a/b) * y0;
}
}
int sFact(int d, int exp)
{
int x = d % MOD;
if(x == 0)
return 1;
if(x == 1)
return (exp + 1) % MOD;
return (pow(d, exp + 1) + MOD - 1) % MOD * pow(d - 1, MOD-2) % MOD;
}
int main()
{
int a, b;
f>>a>>b;
int p = 0;
int ans = 1;
for(int i = 2; i*i<=a; i++)
{
p = 0;
if(a % i == 0)
{
while(a % i == 0)
{
p++;
a /= i;
}
ans = (ans * sFact(i, b*p)) % MOD;
}
}
if(a > 1)
{
ans = ans * sFact(a, b) % MOD;
}
g<<ans;
return 0;
}