#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;
void mul(int *c,int *a,int *b) //c=a*b
{
int i,j,k,carry,result;
memset(c,0,sizeof(int)*126);
for(j=0,carry=0;j<b[124];j++)
{
for(i=0;i<a[124];i++)
{
k=i+j;
result=b[j]*a[i]+carry+c[k];
c[k]=result%10;
carry=result/10;
}
while(carry)
{
k++;
result=carry+c[k];
carry=result/10;
c[k]=result%10;
}
}
for(i=123;c[i]==0;i--)
c[124]=i;
c[125]=a[125]+b[125];
}
void s2i(char *str,int *a)
{
int n=strlen(str),i,j;
char tmp;
for(i=0,j=n-1;i<j;i++,j--)
{
tmp=str[i];
str[i]=str[j];
str[j]=tmp;
}
for(i=0,a[125]=a[124]=0;str[i]!='.';i++)
{
a[i]=str[i]-'0';
a[125]++;
}
for(i++;i<n;i++)
a[i-1]=str[i]-'0';
a[124]=n-1;
}
int main()
{
int a[126],b[126],c[126],n; //R[125]用来保存小数点,R[124]保存长度
char str[10];
while(cin>>str>>n)
{
s2i(str,a);
memcpy(b,a,126*sizeof(int));
memset(c,0,126*sizeof(int));
c[0]=1;
c[124]=1;
for(int i=1;i<=n;i++)
{
mul(b,c,a);
memcpy(c,b,126*sizeof(int));
}
//output
int i=c[124]-1,j=c[124]-c[125],k;
for(k=0;c[k]==0;k++)
;
if(j<0)
{
printf(".");
while(j<0)
{
printf("0");
j++;
}
while(i>=k)
{
printf("%d",c[i]);
i--;
}
}
else
{
while(i>=k)
{
if(j==0)
printf(".");
j--;
printf("%d",c[i]);
i--;
}
}
printf("\n");
}
return 0;
}