Pagini recente » Cod sursa (job #1626006) | Cod sursa (job #1435128) | Cod sursa (job #2235477) | Cod sursa (job #1856593) | Cod sursa (job #1563892)
#include <bits/stdc++.h>
using namespace std;
#define Mod 9901
int a,b;
vector<int> Factor;
vector<int> Power;
void GetFactor(int a) {
Factor.push_back(1);
Power.push_back(1);
int factMax = static_cast<int>(sqrt(static_cast<double>(a)));
int aa = a;
for (int i = 2; i <= factMax; i++)
if (a % i == 0) {
Factor.push_back(i);
Power.push_back(0);
while (a % i == 0) a /= i, ++Power.back();
}
if (Factor.size() == 1) Factor.push_back(aa), Power.push_back(1);
}
int log_put(int n,int p) {
if (p == 0) return 1;
if (p&1) return 1LL * n * log_put(1LL*n*n%Mod,p>>1) % Mod;
return log_put(1LL*n*n%Mod,p>>1);
}
int main()
{
ifstream fin("sumdiv.in");
ofstream fout("sumdiv.out");
fin >> a >> b;
GetFactor(a);
for (int& i : Power)
i *= b;
int Sum = 1;
for (int i = 1; i < Factor.size(); i++) {
int add1 = log_put(Factor[i],Power[i]+1) - 1;
if (add1 < 0) add1 += Mod;
int add2 = log_put(Factor[i]-1,Mod-2);
Sum = 1LL * Sum * add1 % Mod * add2 % Mod;
}
fout << Sum;
}