Pagini recente » Cod sursa (job #2284103) | Cod sursa (job #1620144) | Cod sursa (job #1736368) | Cod sursa (job #2894098) | Cod sursa (job #1139736)
#include <iostream>
#include <fstream>
using namespace std;
typedef long long ll;
const int MOD = 9901;
int A, B;
int my_pow(int n, int p) // calculeaza (n**p) % MOD;
{
if (p == 0) return 1;
int ret = 1;
if (p%2==1) ret = n;
return (ret * my_pow((n*n) %MOD, p/2)) % MOD;
}
int main()
{
ifstream f ("sumdiv.in");
ofstream g ("sumdiv.out");
f >> A >> B;
if (A == 0) {g << 0 << endl; return 0;}
ll sumdiv = 1;
int factor = 1;
if (A%2 == 0) {
factor = 1;
while (A%2 == 0) {
A /= 2;
factor *= 2;
}
sumdiv = (my_pow(factor %MOD, B) * 2 - 1) %MOD;
}
for (int p = 3; p*p <= A; p += 2) {
if (A % p == 0) {
factor = 1;
while (A%p == 0) {
A /= p;
factor *= p;
}
sumdiv *= (my_pow(factor %MOD, B) * p - 1) * my_pow((p-1) %MOD, MOD-2);
sumdiv %= MOD;
}
}
if (A > 1) {
sumdiv *= (my_pow(A %MOD, B) * A - 1) * my_pow((A-1) %MOD, MOD-2);
sumdiv %= MOD;
}
g << sumdiv << endl;
return 0;
}