Pagini recente » Borderou de evaluare (job #2961567) | Cod sursa (job #1136173) | Cod sursa (job #2670773) | Cod sursa (job #314236) | Cod sursa (job #3233456)
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
const int MOD = 9901;
// Funcție pentru a calcula exponențierea modulară
long long modExp(long long base, long long exp, long long mod) {
long long result = 1;
while (exp > 0) {
if (exp % 2 == 1) {
result = (result * base) % mod;
}
base = (base * base) % mod;
exp /= 2;
}
return result;
}
// Funcție pentru a calcula suma divizorilor unui număr
long long sumDivisors(long long num) {
long long sum = 1;
for (long long i = 2; i <= sqrt(num); ++i) {
if (num % i == 0) {
long long tempSum = 1;
long long tempProd = 1;
while (num % i == 0) {
num /= i;
tempProd *= i;
tempSum += tempProd;
}
sum *= tempSum;
}
}
if (num > 1) {
sum *= (1 + num);
}
return sum;
}
int main() {
ifstream inFile("sumdiv.in");
ofstream outFile("sumdiv.out");
long long A, B;
inFile >> A >> B;
long long AB = modExp(A, B, MOD);
long long sum = sumDivisors(AB);
long long result = sum % MOD;
outFile << result << endl;
inFile.close();
outFile.close();
return 0;
}