Pagini recente » Cod sursa (job #3001796) | Cod sursa (job #504112) | Cod sursa (job #2117353) | Cod sursa (job #486726) | Cod sursa (job #2982237)
#include <fstream>
#include <unordered_map>
#define MOD 9901
using namespace std;
ifstream cin("sumadiv.in");
ifstream cout("sumadiv.out");
// function to compute (a^b) % MOD
int power(int a, int b) {
if (b == 0) {
return 1;
} else if (b % 2 == 0) {
int x = power(a, b / 2);
return (x * x) % MOD;
} else {
int x = power(a, b / 2);
return (a * x % MOD * x % MOD) % MOD;
}
}
// function to compute the sum of powers of a prime factor
int prime_sum(int p, int k) {
if (k == 0) {
return 1;
} else if (k % 2 == 0) {
int x = prime_sum(p, k / 2);
return ((1 + power(p, k / 2)) % MOD * x) % MOD;
} else {
int x = prime_sum(p, k / 2);
return ((1 + power(p, k / 2) + power(p, k)) % MOD * x) % MOD;
}
}
int main() {
int A, B;
cin >> A >> B;
unordered_map<int, int> primes;
for (int i = 2; i * i <= A; i++) {
while (A % i == 0) {
primes[i]++;
A /= i;
}
}
if (A > 1) {
primes[A]++;
}
int s = 1;
for (auto& [p, k] : primes) {
s = (s * prime_sum(p, k)) % MOD;
}
cout << s << endl;
return 0;
}