#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 5e5+7;
ll n,t;
int ar[N],br[N],cr[N];
string a;
int b;
int la,lb,lc;
void clean_it()
{
memset(ar,0,sizeof(ar));
memset(br,0,sizeof(br));
memset(cr,0,sizeof(cr));
n=t=b=la=lb=lc=0;
}
void mult(){
fill(cr,cr+lc+3,0);
for(int i=0;i<la;i++){
for(int j=0;j<lb;j++){
cr[i+j] += ar[i]*br[j];
cr[i+j+1] += cr[i+j]/10;
cr[i+j] %= 10;
}
}
while(lc && cr[lc]==0)lc--;
}
int main(){
while(cin>>a>>b){
clean_it();
la = a.size();
ll k = 0;
bool z=1;
for(int i=la-1;i>=0;i--){
if(a[i]=='0' &&z){
la--;
a.erase(i,1);
continue;
}
z=0;
if(a[i]=='.'){
a.erase(i,1);
la--;
break;
}
k++;
}
if(k==la)k=0;
k*=b;//计算后导零
// cout<<k<<endl;
if(a[0]=='0'){
a.erase(0,1);
la--;
}//去除前导零
for(int i=la-1;i>=0;i--){
ar[la-i-1] = a[i]-48;
br[la-i-1] = ar[la-i-1];
// cout<<ar[la-i-1];
}lb = la;
//倒序储存
b--;
while(b--){
lc = la*2;
mult();
swap(cr,ar);
la = lc*2;
// for(int i=la;i>=0;i--){
// cout<<ar[i];
// }
// cout<<endl;
//最后时lc为长度-1 最终答案在ar中最后用的是lc
}
// cout<<lc;
lc++;
if(k==0){
for(int i=lc-1;i>=0;i--){
cout<<ar[i];
}
continue;
}
if(k>=lc){//小数点起头
cout<<'.';
for(int p=0;p<=(k-lc-1);p++){
cout<<'0';
}
for(int i=lc-1;i>=0;i--){
cout<<ar[i];
}
}
else{
ll l=0;
for(int i=lc-1;i>=0;i--){
cout<<ar[i];
l++;
if(l==(lc-k))cout<<'.';
}
}
cout<<endl;
}
return 0;
}