Pagini recente » Istoria paginii runda/simulare-cartita-11 | Cod sursa (job #1694100) | Istoria paginii runda/simulare-cartita-42 | Istoria paginii utilizator/mai0neza | Cod sursa (job #1244673)
#include <stdio.h>
#define IN "lgput.in"
#define OUT "lgput.out"
static const unsigned long mod = 1999999973;
static unsigned long lgput(unsigned long n, unsigned long p)
{
if (p == 0)
return 1;
if (p == 1)
return n;
if (p % 2)
return (n * lgput(n * n, (p - 1) >> 1)) % mod;
else
return lgput(n * n, p >> 1) % mod;
}
int main(void)
{
unsigned long p, n;
freopen(IN, "r", stdin);
freopen(OUT, "w", stdout);
scanf("%lu %lu", &n, &p);
printf("%lu\n", lgput(n, p) % mod);
return 0;
}