#include <stdio.h>
#include <string.h>
int main() {
int a, b;
if (scanf("%d %d", &a, &b) != 2) return 0;
// 1. 处理特殊情况 0
if (a == 0) {
printf("0\n");
return 0;
}
// 2. 处理正负号
int sign = 1; // 1代表正数,-1代表负数
if (a < 0) {
if (b % 2 != 0) {
sign = -1; // 负数的奇数次方是负数
}
a = -a; // 取绝对值方便后续乘法计算
}
// 3. 用数组模拟大数乘法,初始化为 1
int res[100] = {0};
res[0] = 1;
int len = 1; // 当前数字的长度
// 循环乘 b 次
for (int i = 0; i < b; i++) {
int carry = 0; // 进位
for (int j = 0; j < len; j++) {
int prod = res[j] * a + carry;
res[j] = prod % 10; // 当前位
carry = prod / 10; // 进位
}
// 处理剩下的进位
while (carry > 0) {
res[len] = carry % 10;
carry /= 10;
len++;
}
}
// 4. 开始输出结果
// 如果结果是负数,先打印负号
if (sign == -1) {
printf("-");
}
// 从最高位开始倒着打印数组
for (int i = len - 1; i >= 0; i--) {
printf("%d", res[i]);
}
printf("\n");
return 0;
}