Cod sursa(job #583881)
/**
* user: caen1
* file: infoarena/lgput.c
* date: 23 apr 2011
**/
#include <stdio.h>
#define MOD 1999999973
#define IN "lgput.in"
#define OUT "lgput.out"
static unsigned long n;
static unsigned long long lgput(unsigned long);
int main(void) {
unsigned long e;
(void) freopen(IN, "r", stdin);
(void) freopen(OUT, "w", stdout);
(void) scanf("%lu %lu", &n, &e);
printf("%llu\n", lgput(e));
return 0;
}
unsigned long long lgput(unsigned long e) {
unsigned long long x;
if(e == 1) return n;
x = lgput(e >> 1);
x = (x * x) % MOD;
if(e & 1) x = (x * n) % MOD;
return x;
}