Pagini recente » Cod sursa (job #1614704) | Cod sursa (job #3158274) | Cod sursa (job #1149967) | Cod sursa (job #1613973) | Cod sursa (job #2691073)
#include <stdio.h>
#define MOD 9901
unsigned long long suma( long long n, long long q )
{
int d = 2;
unsigned long long p = 1;
unsigned long long s = 1;
while( n % d == 0 ){
n /= d;
p *= d;
}
if( p > 1 ){
for( int i = 0; i < q; i++ )
p *= d;
s = s * ( ( p - 1 ) / ( d - 1 ) % MOD ) % MOD;
}
if( n > 1 && d * d >= n )
d = n;
++d;
while( n > 1 ){
p = 1;
while( n % d == 0 ){
n /= d;
p *= d;
}
if( p > 1 ){
for( long long i = 0; i < q; i++ )
p *= d;
s = s * ( ( p - 1 ) / ( d - 1 ) % MOD ) % MOD;
}
if( n > 1 && d * d >= n )
d = n;
d += 2;
}
return s;
}
int main()
{
int n, p;
FILE *fin = fopen( "sumdiv.in", "r" );
fscanf( fin, "%d %d", &n, &p );
fclose( fin );
FILE *fout = fopen( "sumdiv.out", "w" );
fprintf( fout, "%llu", suma( n, p ) );
fclose( fout );
return 0;
}