Pagini recente » Cod sursa (job #2375004) | Cod sursa (job #2962701) | Cod sursa (job #2447675) | Cod sursa (job #1317480) | Cod sursa (job #2666980)
#include <stdio.h>
#define MOD 9901
int lgput( int a, int b ) {
int put = 1;
while ( b > 0 ) {
if ( b % 2 == 1 )
put = (long long)put * a % MOD;
a = (long long)a * a % MOD;
b /= 2;
}
return put;
}
int main() {
FILE *fin, *fout;
fin = fopen( "sumdiv.in", "r" );
fout = fopen( "sumdiv.out", "w" );
int a, n, e, d, var, imp, rez;
fscanf( fin, "%d %d", &a, &n );
if( n == 0 )
a = 1;
d = 2;
rez = 1;
while (d * d <= a) {
e = 0;
while(a % d == 0) {
e++;
a /= d;
}
if( e ) {
if ( d % MOD == 1 ) {
rez *= ( (long long)e * n + 1 ) % MOD;
} else {
e *= n;
e++;
var = lgput( d, e );
var--;
imp = lgput( d - 1, n - 2 );
rez *= (long long)var * imp % MOD;
}
}
++d;
}
if( a > 1 ) {
if ( d % MOD == 1 ) {
rez *= ( (long long)e * n + 1 ) % MOD;
} else {
e = 1;
e *= n;
e++;
var = lgput( d, e );
var--;
imp = lgput( d - 1, n - 2 );
rez *= (long long)var * imp % MOD;
}
}
fprintf( fout, "%d", rez );
return 0;
}