#include<stdio.h>
#include<string.h>
class db
{
public:
int d[500];
int len;
int pos;
void clean( );
db operator=(char* s);
db();
db(char* s);
void display();
db operator* (const db d) const;
};
void db::clean()
{
int p = pos;
int l = len;
int dd[300];
for(int k = 0; k < 300; k++)
{
dd[k] = d[k];
}
int i;
for(i = 0; i < p; i++)
if(dd[i] != 0) break;
len = 0;
for(int j = i; i!=p && j < p; j++) //i!=p
{
d[len++] = dd[j];
}
pos = len;
for(i = l-1; i>= p; i--) //p!=len
{
if(dd[i] != 0) break;
}
for(int j = p; p!= l && j<=i; j++)
{
d[len++] = dd[j];;
}
}
db::db()
{
len = 1 ; //结果为db的0?R!=0
pos = 0;
memset(d,0, sizeof(d));
}
db::db(char* s)
{
*this = s;
}
db db::operator=(char* s)
{
memset(d, 0, sizeof(d));
len = 0;
pos = -1;
for(int i = 0; i < strlen(s); i++)
{
if(s[i] == '.')
pos = i;
else d[len++] = s[i]-'0';
}
if(pos == -1) pos = len;
this->clean();
//reverse
int temp;
for(int re = 0; re < len/2; re++)
{
temp = d[re];
d[re] = d[len-1-re];
d[len-1-re] = temp;
}
pos = len-pos;
return *this;
}
void db::display()
{
int i;
for(i = len-1; i >= pos; i--)
printf("%d", d[i]);
if(pos != 0)
{
putchar('.');
for(; i >= 0; i--)
printf("%d", d[i]);
putchar('\n');
}
}
db db::operator*(const db rhs) const
{
db res;
int prd;
for(int i = 0; i < len; i++)
{
for(int j = 0; j < rhs.len; j++)
{
prd =res.d[i+j]+d[i]*rhs.d[j];
res.d[i+j] = prd%10;
res.d[i+j+1] += prd/10;
}
}
res.pos = pos+rhs.pos;
res.len = len+rhs.len;
res.clean();
/*
printf("hi:");
res.display();
*/
return res;
}
int main()
{
//
freopen("input.txt", "r", stdin);
char r[30000];
int n;
while(scanf("%s %d", r, &n) == 2)
{
db res =r;
for(int i = 1; i < n; i++)
{
res = res*r;
}
res.display();
}
}