Pagini recente » Cod sursa (job #3285485) | Cod sursa (job #765044) | Cod sursa (job #2420898) | Cod sursa (job #2098995) | Cod sursa (job #2666990)
#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)rez * e * n + 1 ) % MOD;
} else {
e *= n;
e++;
var = lgput( d, e );
if( var % MOD == 0 )
var = MOD - 1;
else
var--;
imp = lgput( d - 1, MOD - 2 );
rez = (long long)rez * var * imp % MOD;
}
}
++d;
}
if( a > 1 ) {
if ( a % MOD == 1 ) {
rez = ( (long long)rez * e * n + 1 ) % MOD;
} else {
e = 1;
e *= n;
e++;
var = lgput( a, e );
if( var % MOD == 0 )
var = MOD - 1;
else
var--;
imp = lgput( a - 1, MOD - 2 );
rez = (long long)rez * var * imp % MOD;
}
}
fprintf( fout, "%d", rez );
return 0;
}