#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//1、打印一个数的奇数位和偶数位
//void print(int m)
//{
// int i = 0;
// printf("打印奇数位\n");
// for (i = 30; i >= 0; i -= 2)
// {
// printf("%d ", (m >> i) & 1);
// }
// printf("\n");
// printf("打印偶数位\n");
// for (i = 31; i >= 1; i -= 2)
// {
// printf("%d ", (m >> i) & 1);
// }
// printf("\n");
//}
//int main()
//{
// int m = 0;
// scanf("%d", &m);
// print(m);
// return 0;
//}
//2、输入一个数,打印该数的乘法口诀表
//void print_table(int n)
//{
// int i = 0;
// for (i = 1; i <= n; i++)
// {
// int j = 0;
// for (j = 1; j <= i; j++)
// {
// printf("%d*%d=%-3d ",i, j, i * j);
// }
// printf("\n");
// }
//}
//int main()
//{
// int n = 0;
// scanf("%d", &n);
// print_table(n);
// return 0;
//}

//将字符串反向排序
#include <string.h>
int my_strlen(char* str)
{
int count = 0;
while (*str!='\0')
{
count++;
str++;
}
return count;
}
//void reverse_string(char arr[])
//{
// int left = 0;
// int right = strlen(arr) - 1;
// while (left < right)
// {
// int tmp = arr[left];
// arr[left] = arr[right];
// arr[right] = tmp;
// left++;
// right--;
// }
//}

//void reverse_string(char arr[])
//{
// char tmp = arr[0];
// int len = my_strlen(arr);
// arr[0] = arr[len - 1];
// arr[len - 1] = '\0';
// if (my_strlen(arr + 1) >= 2)//递归是有条件的
// reverse_string(arr + 1);
// arr[len - 1] = tmp;
//}
//int main()
//{
// char arr[] = "abcdef";
// reverse_string(arr);
// printf("%s\n", arr);
// return 0;
//}
double Pow(int n,int k)
{
if (k < 0)
{
return (1.0 / (Pow(n, -k)));
}
else if (k == 0)
{
return 1;
}
else
{
return n * Pow(n, k-1);
}
}
int main()
{
int n = 0;
int k = 0;
scanf("%d%d", &n, &k);

double ret = Pow(n,k);
printf("ret=%lf\n", ret);
return 0;
}