Pagini recente » Cod sursa (job #970599) | Cod sursa (job #2022933) | Cod sursa (job #609769) | Cod sursa (job #2317680) | Cod sursa (job #2668976)
#include <stdio.h>
#include <stdlib.h>
#define MOD 9901
void euclid( int a, int b, int *d, int *x, int *y ) {
if( b == 0 ) {
*d = a;
*x = 1;
*y = 0;
}else {
int x0, y0;
euclid( b, a % b, d, &x0, &y0 );
*x = y0;
*y = x0 - ( a / b ) * y0;
}
}
int lgput( long long n, long long p ) {
int put = 1;
while( p > 0 ) {
if( p % 2 == 1 )
put = ( put * n ) % MOD;
n = ( n * n ) % MOD;
p /= 2;
}
return put;
}
int main() {
FILE *fin, *fout;
int a, b, s, d, e;
fin = fopen( "sumdiv.in", "r" );
fscanf( fin, "%d%d", &a, &b );
fclose( fin );
s = 0;
d = 2;
while( d * d < a ) {
e = 0;
while( a % d == 0 ) {
a /= d;
e++;
}
if( e > 0 )
s = ( s + ( ( ( lgput( d, e + b + 1 ) - 1 ) * lgput( d - 1, MOD - 2 ) % MOD ) % MOD ) ) % MOD;
d++;
}
if( a > 1 )
s = ( ( s + ( ( lgput( a, b + 1 ) - 1 ) * lgput( a - 1, MOD - 2 ) % MOD ) % MOD ) ) % MOD;
fout = fopen( "sumdiv.out", "w" );
fprintf( fout, "%d\n", s );
fclose( fout );
return 0;
}