# include <stdio.h>
# include <stdint.h>
# include <arpa/inet.h>
uint64_t bin_exp(uint32_t x, uint32_t k) {
uint64_t res = 1;
uint32_t k_copy = k;
if (k == 0)
return 1;
k = ntohl(k);
while (k) {
res *= res;
if (k & 1)
res *= x;
k >>= 1;
}
for (; !(k_copy & 1); k_copy >>= 1)
res *= res;
return res;
}
int main(void) {
int i, j;
for (i = 2; i <= 25; i++)
for (j = 2; j <= 10; j++)
printf("%d^%d = %llu\n", i, j, bin_exp(i, j));
return 0;
}