Pagini recente » Cod sursa (job #2631061) | Cod sursa (job #563291) | Cod sursa (job #428067) | Cod sursa (job #729205) | Cod sursa (job #1956390)
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
const long long MOD = 9901 ;
long long CalcFastExp ( long long x , long long power ){
static long long 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(){
long long a , b , power , i ;
long long sumDiv = 1 ;
freopen("sumdiv.in","r",stdin);
freopen("sumdiv.out","w",stdout);
scanf("%lld%lld",&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 );
sumDiv %= MOD ;
sumDiv = sumDiv * CalcFastExp( i - 1 , MOD - 2 );
sumDiv %= MOD ;
// printf("%lld\n",sumDiv);
}
}
if ( a != 1){
if ( a % MOD == 1){
sumDiv = ( sumDiv * ( b + 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("%lld",sumDiv );
return 0;
}