Pagini recente » Cod sursa (job #314515) | Cod sursa (job #1026294) | Cod sursa (job #1777272) | Cod sursa (job #149916) | Cod sursa (job #3164705)
#include <stdio.h>
#define MOD 9901
int exponentiere( int a, int b )
{
int p = 1;
a = a % MOD;
while( b > 0 )
{
if( b % 2 == 1 )
{
p = p * a % MOD;
}
a = a * a % MOD;
b /= 2;
}
return p;
}
int invers_modular( int a )
{
return exponentiere( a, MOD - 2 );
}
int sumdiv( int a, int b )
{
int copie = a;
a = a % MOD;
if( a == 0 )
{
return 1;
}
if( a == 1 )
{
return ( b + 1 ) % MOD;
}
return ( exponentiere( copie, b + 1 ) + MOD - 1 ) % MOD * invers_modular( copie - 1 ) % MOD;
}
int main()
{
FILE *fin, *fout;
int a, b, s, div, prod = 1, exp;
fin = fopen( "sumdiv.in", "r" );
fscanf( fin, "%d%d", &a, &b );
fclose( fin );
for( div = 2; div * div <= a; div++ )
{
exp = 0;
if( a % div == 0 )
{
while( a % div == 0 )
{
a /= div;
exp++;
}
prod = ( prod * sumdiv( div, exp * b ) ) % MOD;
}
}
if( a > 1 )
{
prod = ( prod * sumdiv( a, b ) ) % MOD;
}
fout = fopen( "sumdiv.out", "w" );
fprintf( fout, "%d", prod );
fclose( fout );
return 0;
}