Pagini recente » Cod sursa (job #2899454) | Cod sursa (job #627129) | Cod sursa (job #1217174) | Cod sursa (job #2879114) | Cod sursa (job #2691275)
#include <stdio.h>
#define MOD 9901
int caca( int a, long long b ) {
int rez = 1;
while( b > 0 ){
if( b % 2 == 1 )
rez = ( long long )rez * a % MOD;
a = a * a % MOD;
b /= 2;
}
return rez;
}
int main()
{
int n, p, d = 2;
long long e, rez = 1;
FILE *fin = fopen( "sumdiv.in", "r" );
fscanf( fin, "%d %d", &n, &p );
fclose( fin );
if( p == 0 )
n = 1;
while( n > 1 ) {
e = 0LL;
while( n % d == 0 ){
n /= d;
++e;
}
if( e > 0 ){
printf( "%d^ %lld\n", d, e );
if( d % MOD == 1 )
rez = rez * ( e * p + 1 ) % MOD;
else {
e *= p;
++e;
int val = caca( d, e );
if( val % MOD == 0 )
val = MOD - 1;
else --val;
int inv = caca( d - 1, MOD - 2 );
rez = rez * ( long long )inv * val % MOD;
}
}
++d;
if( d > 3 )
++d;
if( n > 1 && d * d >= n )
d = n;
}
FILE *fout = fopen( "sumdiv.out", "w" );
fprintf( fout, "%lld\n", rez );
fclose( fout );
return 0;
}