Pagini recente » Cod sursa (job #2253964) | Cod sursa (job #3172012) | Cod sursa (job #2339079) | Cod sursa (job #2923752) | Cod sursa (job #1156068)
#include<cstdio>
#include<vector>
using namespace std;
#define MOD 9901
#define MAX 10001
#define pb push_back
int A , B , k , d[MAX] , a[MAX] , prod[MAX] , sol ;
bool u[MAX];
vector<int > p;
int powMod(int a , int n)
{
if( n == 0) return 1;
if(n == 1) return a;
if(n%2) return (a*powMod((a*a)%MOD,(n-1)/2))%MOD;
else return powMod((a*a)%MOD,n/2)%MOD;
}
void ciur ()
{
p.pb(2);
for(int i = 3 ; i < MAX ; i+=2 )
if(!u[i])
{
for(int j = i*3 ; j < MAX ; j+=2*i)
u[j] = 1;
p.pb(i);
}
}
int main()
{
freopen("sumdiv.in" , "r" , stdin );
freopen("sumdiv.out" , "w" , stdout );
scanf("%d%d" , &A , &B );
ciur();
for(int i = 0 ; p[i]*p[i] <= A ; ++i )
{
if(A%p[i]==0)
d[++k] = p[i];
while(A%p[i] == 0)
{
A/=p[i];
a[k]++;
}
}
if(A > 1)
{
d[++k] = A%MOD;
a[k] = 1;
}
for(int i = 1 ; i <= k ; ++i )
prod[i] = ((powMod(d[i],a[i]*B+1)-1) * powMod(d[i]-1,MOD-2))%MOD;
sol = 1;
for(int i = 1 ; i<= k ; ++i )
sol = (sol*prod[i])%MOD;
printf("%d" , sol );
return 0;
}