Pagini recente » Cod sursa (job #2727961) | Cod sursa (job #1471420) | Cod sursa (job #2965250) | Cod sursa (job #1584115) | Cod sursa (job #2666149)
#include <stdio.h>
#include <stdlib.h>
#define MOD 9901
int put(int a, int p){
int valret;
if(0 < p){
valret = put(a, p / 2);
if((p % 2) == 1){
valret = ((a * valret) % MOD * valret) % MOD;
}else{
valret = (valret * valret) % MOD;
}
}else{
valret = 1;
}
return valret;
}
int main()
{
FILE *fin, *fout;
int a, b, d, e, sdiv, s;
fin = fopen("sumdiv.in", "r");
fscanf(fin, "%d%d", &a, &b);
fclose(fin);
if(0 < a){
d = 2;
sdiv = 1;
while((d * d) <= a){
e = 0;
while((a % d) == 0){
e++;
a /= d;
}
if(0 < e){
sdiv = (sdiv * (((((put(d, b * e + 1) - 1 + MOD) % MOD) * put(d - 1, MOD - 2)) % MOD))) % MOD;
}
d++;
}
if(1 < a){
if(((a - 1) % MOD) != 0){
sdiv = (sdiv * ((((put(a, b + 1) - 1 + MOD) % MOD) * put(a - 1, MOD - 2)) % MOD)) % MOD;
}else{
d = 1;
a %= MOD;
s = 0;
for(e = 0; e <= b; e++){
s = (s + d) % MOD;
d = (d * a) % MOD;
}
sdiv = (sdiv * s) % MOD;
}
}
}else{
if(b == 0){
sdiv = 1;
}else{
sdiv = 0;
}
}
fout = fopen("sumdiv.out", "w");
fprintf(fout, "%d", sdiv);
fclose(fout);
return 0;
}