Pagini recente » Cod sursa (job #2862940) | Cod sursa (job #226799) | Cod sursa (job #2141650) | Cod sursa (job #1371289) | Cod sursa (job #2931008)
#include <bits/stdc++.h>
using namespace std;
#define MOD 9901
#define NO_PRIME_FACTORS 8
int noPrimeFactors;
int prime[NO_PRIME_FACTORS];
int exponent[NO_PRIME_FACTORS];
void desc(int a, int b) {
int div;
noPrimeFactors = 0;
div = 2;
while (div * div <= a) {
if (a % div == 0) {
prime[noPrimeFactors] = div;
exponent[noPrimeFactors] = 0;
while (a % div == 0) {
a /= div;
exponent[noPrimeFactors] += b;
}
++noPrimeFactors;
}
++div;
}
if (a > 1) {
prime[noPrimeFactors] = a;
exponent[noPrimeFactors] = b;
++noPrimeFactors;
}
}
int lgPut(int a, int n) {
int p;
p = 1;
while (n) {
if (n & 1)
p = p * a % MOD;
a = a * a % MOD;
n >>= 1;
}
return p;
}
int main() {
FILE *fin, *fout;
fin = fopen("sumdiv.in", "r");
fout = fopen("sumdiv.out", "w");
int a, b;
int i, sumDiv;
fscanf(fin, "%d%d", &a, &b);
desc(a, b);
sumDiv = 1;
for (i = 0; i < noPrimeFactors; ++i) {
sumDiv = sumDiv * (lgPut(prime[i], exponent[i] + 1) + MOD - 1) % MOD;
sumDiv = sumDiv * lgPut(prime[i] - 1, MOD - 2) % MOD;
}
fprintf(fout, "%d\n", sumDiv);
fclose(fin);
fclose(fout);
return 0;
}