Pagini recente » Cod sursa (job #2368778) | Cod sursa (job #2703703)
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define pb push_back
#define dbg(x) cerr << #x << " " << x << "\n"
const int MOD = 9901;
void add (int &a, int b) {
a += b;
if (a >= MOD)
a -= MOD;
}
void sub (int &a, int b) {
a -= b;
if (a < 0)
a += MOD;
}
int mult (int a, int b) {
return a * b % MOD;
}
int lgput (int a, int b) {
int ans = 1;
while (b) {
if (b & 1) ans = mult (ans, a);
a = mult (a, a);
b /= 2;
}
return ans;
}
int main () {
freopen ("sumdiv.in", "r", stdin);
freopen ("sumdiv.out", "w", stdout);
int A, B;
cin >> A >> B;
int d = 2;
vector <pair <int, int>> divisors;
while (d * d <= A) {
if (A % d == 0) {
int ep = 0;
while (A % d == 0)
A /= d, ep++;
divisors.pb ({d, ep});
}
d++;
}
if (A > 1)
divisors.pb ({A, 1});
int ans = 1;
for (pair <int, int> d : divisors) {
int e = d.second;
int dv = d.first;
int to_mult = lgput (dv, e * B + 1);
sub (to_mult, 1);
if (dv % MOD > 1)
to_mult = mult (to_mult, lgput (dv - 1, MOD - 2));
ans = mult (ans, to_mult);
}
cout << ans << "\n";
return 0;
}