Pagini recente » Cod sursa (job #1666100) | Cod sursa (job #1035444) | Cod sursa (job #1126738) | Cod sursa (job #1773472) | Cod sursa (job #981243)
Cod sursa(job #981243)
#include <stdio.h>
#define DIV 1999999973
long long pow1(unsigned a, unsigned b)
{
long long exp = a;
while (--b)
exp = (exp * a) % DIV;
return exp;
}
long long pow2(long long n, long long p)
{
if (p == 0) return 1;
if (p == 1) return n;
if (p%2)
return n * pow2(n * n % DIV, p / 2) % DIV;
else
return pow2(n * n % DIV, p / 2) % DIV;
}
long long pow3(long long n, long long p)
{
long long n1 = n;
long long n2 = n * n;
while (p)
{
if (p & 1)
{
n1 = n1 * n2 % DIV;
n1 = n2 * n2 % DIV;
}
else
{
n2 = n1 * n2 % DIV;
n1 = n1 * n1 % DIV;
}
p >>= 1;
}
return n1;
}
int main()
{
unsigned N, P;
freopen("lgput.in", "r", stdin);
freopen("lgput.out", "w", stdout);
scanf("%d %d", &N, &P);
printf("%lld\n", pow3(N, P));
return 0;
}