// Solution by OUSAA#include <stdio.h>#include <string.h>void add(int* a1,int* a2,int* result){ int i; int temp; for (i=0,temp=0;i<51;++i) { result[i]=temp; temp=a1[i]+a2[i]; result[i]+=temp%10; temp/=10; } result[n]=temp;}void multiply(int* m1,int* m2,int* result){ int i,j; int up; int mid[103],step[103]; for (i=0;i<51;++i) { int temp=m2[i]; if (temp==0) continue; memset(mid,0,sizeof(mid)); for (j=0,up=0;j<51;++j) { mid[j+i]=up+m1[j]*temp; up=mid[j+i]/10; mid[j+i]%=10; } mid[n1+i]=up; add(mid,result,step,n1+i); memcpy(result,step,51*sizeof(int)); }}void exponential(int* m1,int ex,int* result){ int i; for (i=0;i<ex;++i) { multiply(m1,m1,result); memcpy(m1,result,51*sizeof(int)); }}int main(){ char num[7]; int d[51]; int res[51]; int ex; int i,k,dot,pos; int forward; while(scanf("%s %d",num,&ex)) { memset(d,0,sizeof(d)); memset(res,0,sizeof(res)); for (i=0,dot=5,pos=4;i<6;++i) { if (num[i]=='.') { dot=i; continue; } d[pos--]=num[i]-'0'; } forward=(5-dot)*ex; exponential(d,ex,res); k=50; while (res[k]==0) --i; for (i=k;i>=forward;--i) putchar(res[i]+'0'); if (forward!=0) { putchar('.'); for (i=forward-1;i>=0;--i) putchar(res[i]+'0'); } putchar('\n'); } return 0;}