Pagini recente » Cod sursa (job #1583639) | Cod sursa (job #3328738) | Cod sursa (job #3332325) | Cod sursa (job #1434062) | Cod sursa (job #3319666)
#include <bits/stdc++.h>
using namespace std;
#define int unsigned long long
const int MOD = 9901;
int a, b;
int expmod(int a, int k)
{
int p = 1;
while (k > 0)
{
if (k % 2 == 1)
{
p *= a;
p %= MOD;
}
a *= a;
a %= MOD;
k /= 2;
}
return p;
}
int inv_mod(int a)
{
return expmod(a, 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 (expmod(d, ex+1) + MOD - 1) * inv_mod(d-1) % MOD;
}
int sumdiv(int a,int b)
{
int allput=1;
int p;
for (int d = 2; d*d <= a; d++){
if (a % d == 0)
{
p = 0;
do
{
p++;
a /= d;
}while (a % d == 0);
allput = allput * sFact(d, b*p) % MOD;
}
}
if (a > 1) allput = allput * sFact(a, b) % MOD;
return allput;
}
signed main()
{
ifstream cin("sumdiv.in");
ofstream cout("sumdiv.out");
int a, b; cin >> a >> b;
cout << sumdiv(a,b);
}