Pagini recente » Cod sursa (job #2441862) | Cod sursa (job #2740111) | Cod sursa (job #513862) | Cod sursa (job #303131) | Cod sursa (job #1505500)
#include <stdio.h>
#define MAXP 9
#define MOD 9901
int d[MAXP];
long long p[MAXP];
inline int ptr(int a, long long b, int mod){
a %= mod;
int rez = 1;
while(b > 0){
if(b & 1){
rez *= a;
rez %= mod;
}
a *= a;
a %= mod;
b /= 2;
}
return rez;
}
int main(){
FILE *in = fopen("sumdiv.in", "r");
int a, b, i, dr = 0;
fscanf(in, "%d%d", &a, &b);
for(i = 2; i * i <= a; i++){
if(a % i == 0){
d[dr] = i;
while(a % i == 0){
a /= i;
p[dr]++;
}
p[dr] *= b;
dr++;
}
}
if(a > 1){
d[dr] = a;
p[dr] = b;
dr++;
}
fclose(in);
int rez = 1, x;
for(i = 0; i < dr; i++){
x = ptr(d[i], p[i] + 1, MOD) - 1;
if(x < 0)
x += MOD;
rez *= x;
rez %= MOD;
x = ptr(d[i] - 1, MOD - 2, MOD);
rez *= x;
rez %= MOD;
}
FILE *out = fopen("sumdiv.out", "w");
if(a == 0)
fprintf(out, "0");
else
fprintf(out, "%d", rez);
fclose(out);
return 0;
}