Pagini recente » Cod sursa (job #1536510) | Cod sursa (job #544301) | Cod sursa (job #3133822) | Cod sursa (job #388400) | Cod sursa (job #3250884)
#include <fstream>
using namespace std;
ifstream cin("sumdiv.in");
ofstream cout("sumdiv.out");
#define mod 9901
long long pow(long long n, long long p)
{
if (p == 0)
{
return 1;
}
else if (p == 1)
{
return n;
}
else if (p % 2 == 0)
{
return pow(((n % mod) * (n % mod)) % mod, p / 2) % mod;
}
else if (p % 2 != 0)
{
return ((n % mod) * (pow(((n % mod) * (n % mod)) % mod, (p - 1) / 2) % mod)) % mod;
}
}
long long invMod(long long val)
{
return pow(val, mod - 2); /// Mica teorema a lui Fermat: (a^p - a) % p = 0
}
int main()
{
long long a, b;
cin >> a >> b;
long long exp = 0;
long long sumdiv = 1;
while (a % 2 == 0)
{
a /= 2;
exp ++;
}
if (exp != 0)
{
if (2 % mod == 1)
{
sumdiv = sumdiv * (exp * b + 1) % mod;
}
else
{
sumdiv = sumdiv * (pow(2, exp * b + 1) - 1) % mod * invMod(2 - 1) % mod;
}
}
for (long long i = 3; i * i <= a; i += 2)
{
exp = 0;
while (a % i == 0)
{
a /= i;
exp ++;
}
if (exp != 0)
{
if (i % mod == 1)
{
sumdiv = sumdiv * (exp * b + 1) % mod;
}
else
{
sumdiv = sumdiv * (pow(i, exp * b + 1) - 1) % mod * invMod(i - 1) % mod;
}
}
}
if (a != 1)
{
if (a % mod == 1)
{
sumdiv = sumdiv * (1 * b + 1) % mod;
}
else
{
sumdiv = sumdiv * (pow(a, 1 * b + 1) - 1) % mod * invMod(a - 1) % mod;
}
}
cout << sumdiv;
return 0;
}