Pagini recente » inversmodular | Borderou de evaluare (job #2136384) | Borderou de evaluare (job #1443225) | Borderou de evaluare (job #2000357) | Cod sursa (job #577703)
Cod sursa(job #577703)
#include <cstdio>
using namespace std;
const int m=1999999973;
int n, p;
int f(int x,int n)
{
if (n==0)
return 1;
if (n<0)
{
n=(-n);
return 1/(f(x,n));
}
if (n%2)
{
n=(n-1)/2;
int c=f(x,n);
return x*c*c;
}
else
{
n/=2;
int c=f(x,n);
return c*c;
}
}
int main()
{
freopen ("lgput.in","r",stdin);
freopen ("lgput.out","w",stdout);
scanf ("%d %d",&n,&p);
printf("%d\n",f(n,p)%m);
return 0;
}