#include <iostream>
#include <string>
#define MAXN 300
using namespace std;
short a[MAXN], b[MAXN];
void mut(short a[],short b[]){
short c[MAXN];
memset(c, 0, MAXN*2);
for (int i = 1; i <= a[0]; i++)
for (int j = 1; j <= b[0]; j++)
c[i+j-1] += a[i]*b[j];
for (int i = 1; i < a[0] + b[0] + 3; i++){
c[i+1] += c[i] / 10;
c[i] %= 10;
}
for (c[0] = a[0] + b[0] + 3; c[c[0]] == 0; c[0]--);
memcpy(b, c, MAXN*2);
}
int main(){
string s;
int n;
while(cin>>s>>n){
int p = s.find(".");
memset(a, 0, MAXN * 2);
memset(b, 0, MAXN * 2);
int u = 0;
if (p>=0)
u = s.length() - p - 1;
for (int i = s.length() - 1; i >= 0; i--)
if (i != p) a[++a[0]] = s[i] - '0';
memcpy(b, a, MAXN*2);
for (int i = 1; i < n; i++) mut(a, b);
p = u;
if (p == 0)
for (int i = b[0]; i > 0; i--) cout << b[i];
else {
p *= n;
int c = 1;
while (b[c] == 0) c++;
for (int i = b[0]; i >p; i--) cout <<b[i];
if (c < p){
cout << '.';
for (int i = p; i >= c; i--) cout <<b[i];
}
}
cout << endl;
}
return 0;
}