Pagini recente » Cod sursa (job #872606) | Cod sursa (job #1394952) | Cod sursa (job #2816057) | Cod sursa (job #3184093) | Cod sursa (job #1955997)
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
const int MOD = 9901 ;
int CalcFastExp ( int x , int power ){
static int temp ;
if ( power == 1 ){
return x % MOD ;
}
temp = CalcFastExp( x , power /2 );
temp = ( temp * temp )% MOD ;
if ( power % 2 ){
return (temp * x )% MOD ;
}
return temp ;
}
int main(){
int a , b , power , i ;
int sumDiv = 1 ;
freopen("sumdiv.in","r",stdin);
freopen("sumdiv.out","w",stdout);
scanf("%d%d",&a ,&b );
for ( i = 2 ; i * i <= a ; i++ ){
power = 0 ;
while ( a % i == 0 ){
a/=i ;
power ++ ;
}
if ( power ){
sumDiv = sumDiv * ( CalcFastExp ( i , power * b + 1 ) - 1 ) * CalcFastExp( i - 1 , MOD - 2 );
sumDiv %= MOD ;
}
}
if ( a != 1){
if ( a % MOD == 1){
sumDiv = ( sumDiv * ( a + 1 ) ) %MOD ;
}else{
sumDiv = ( sumDiv * ( CalcFastExp( a , b + 1 ) - 1 ) )% MOD ;
sumDiv = sumDiv * CalcFastExp( a-1 , MOD - 2 ) ;
sumDiv %= MOD ;
}
}
while( sumDiv < 0 ){
sumDiv += MOD ;
}
printf("%d",sumDiv );
return 0;
}