Pagini recente » Cod sursa (job #1423886) | Cod sursa (job #2711907) | Cod sursa (job #2231484) | Cod sursa (job #2527784) | Cod sursa (job #2430516)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("sumdiv.in");
ofstream fout("sumdiv.out");
const int MOD = 9901;
int A, B;
vector < pair <int, int> > desc;
int sol = 1;
int lgput(int base, int exp)
{
int ans = 1;
int aux = base;
for(int i = 1; i <= exp; i <<= 1) {
if(i & exp)
ans = (ans * aux) % MOD;
aux = (aux * aux) % MOD;
}
return ans;
}
int main()
{
fin >> A >> B;
if(A == 0) {
fout << 0;
return 0;
}
if(B == 0) {
fout << 1;
return 0;
}
for(int i = 2; i * i <= A; i++)
if(A % i == 0) {
int k = 0;
while(A % i == 0) {
A /= i;
k++;
}
desc.push_back({i, k * B});
}
if(A != 1) {
desc.push_back({A, B});
}
for(auto it : desc) {
if(it.first % 9901) {
sol = sol * (lgput(it.first, it.second + 1) - 1) * lgput(it.first, 9899);
sol %= MOD;
}
}
fout << sol;
return 0;
}