Pagini recente » Cod sursa (job #3312452) | Cod sursa (job #3351325) | Cod sursa (job #3342196) | Cod sursa (job #86510) | Cod sursa (job #3322739)
#include <stdio.h>
const int MOD = 9901;
int invMod( int b ) {
int inv = 1;
while ( inv < MOD && (b * inv) % MOD != 1 )
inv++;
return inv;
}
int pow( int p, int e ) {
int rez = 1, a = p;
while ( e > 0 ) {
if ( e % 2 == 1 )
rez = ((long long)rez * a) % MOD;
a = ((long long)a * a) % MOD;
e /= 2;
}
return rez;
}
int main() {
FILE *fin, *fout;
int a, b, sdiv, i, e, imp;
fin = fopen( "sumdiv.in", "r" );
fscanf( fin, "%d%d", &a, &b );
fclose( fin );
sdiv = imp = 1;
for ( i = 2; i * i <= a; i++ ) {
if ( a % i == 0 ) {
e = 0;
while ( a % i == 0 ) {
e++;
a /= i;
}
sdiv = (sdiv * pow( i % MOD, e * b + 1 )) % MOD;
imp = (imp * (i - 1)) % MOD;
}
}
if ( a > 1 ) {
sdiv = (sdiv * pow( a % MOD, b + 1 )) % MOD;
imp = (imp * (a - 1)) % MOD;
}
fout = fopen( "sumdiv.out", "w" );
fprintf( fout, "%d\n", ((sdiv - 1) * invMod( imp )) % MOD );
fclose( fout );
return 0;
}