#include <iostream> #include <string> using namespace std; string Muti(string &s1,string &s2) { string result; result.reserve(400); for(int i=0;i<400;++i) result.push_back('0'); int pos=0,index=0; for(int i=0;i<s1.length();++i) { if(s1[i]=='.') continue; int left=0; index=pos++; for(int j=0;j<s2.length();++j,++index) { if(s2[j]=='.') { index--; continue; } int temp=(s2[j]-'0')*(s1[i]-'0')+left; left=(result[index]-'0'+temp)/10; result[index]=(result[index]-'0'+temp)%10+'0'; } while(left) { int t=left; left=(result[index]-'0'+left)/10; result[index]=(result[index]-'0'+t)%10+'0'; ++index; } } result.resize(index); return result; } int main() { string s1; int n; int point=0; while(cin>>s1>>n) { point=0; for(int i=0;i<s1.length()/2;++i) swap(s1[i],s1[s1.length()-i-1]); if(s1.find('.')!=-1) point=s1.find('.'); string result="1"; for(int i=0;i<n;++i) result=Muti(s1,result); point*=n; int end=0; for(int i=0;i<point;++i) if(result[i]=='0') ++end; else break; int beg=result.length()-1; for(int i=result.length()-1;i>=point;--i) if(result[i]=='0') beg--; else break; for(int i=beg;i>=point;--i) cout<<result[i]; if(point!=end) { cout<<'.'; for(int j=point-1;j>=end;--j) cout<<result[j]; } cout<<endl; } return 0; }