/****************************************/
/*程序 pku1001*/
/*作者: S.Klaus */
/*日期:2005-7-5*/
/*调试:VC6*/
/****************************************
****************************************/
/*头函数 */
#include<iostream.h>
#include<iomanip.h>
#include<stdlib.h>
#include<string.h>
#define max 10000
/***************************************/
int xn(char fnum[],int n);
int fmul(char s1[],char s2[]);
/***************************************/
char sum[max];
char result[max];
/***************************************/
/*子函数计算两个数的乘积*/
int fmul(char s1[],char s2[])
{
int ls1,ls2;//用于存储长度,进位信息
int i=0,j,p,q,m;
int k=0,flag;
char mid[max];
//char sum[max];
ls1=strlen(s1);
ls2=strlen(s2);
//反向
j=ls1-1;
while(j>=0)
{
mid[i++]=s1[j--];
}
mid[i]=s1[ls1];
strcpy(s1,mid);
i=0;
j=ls2-1;
while(j>=0)
{
mid[i++]=s2[j--];
}
mid[i]=s2[ls2];
strcpy(s2,mid);
// cout<<s1<<endl<<s2<<endl;
//计算
for(i=0;i<max;i++)
{
sum[i]='0';
}
i=j=k=0;
flag=0;
p=0;q=0;
while(s2[i]!='\0')
{
flag=0;
m=q;
for(m=0;m<q;m++)
{
mid[m]='0';
}
p=m;
while(s1[j]!='\0')
{
k=(s1[j]-'0')*(s2[i]-'0');
mid[p]=(flag+k)%10+'0';
flag=(flag+k)/10;
j++;p++;
}
if(flag!=0){mid[p++]=flag+'0';}
mid[p]='\0';
flag=0;
p=0;
//*********************************************/
if(i==0)
{
while(mid[p]!='\0')
{
sum[p]=mid[p];
p++;
}
}
else
{
while(mid[p]!='\0')
{
k=(sum[p]-'0')+(mid[p]-'0');
sum[p]=(k+flag)%10+'0';
flag=(k+flag)/10;
p++;
}
if(flag!=0)
{
sum[p++]=flag+'0';
flag=0;
}
}
j=0;
i++;q++;
}
sum[p]='\0';
i=0;j=0;
strcpy(mid,sum);
p-=1;
while(p>=0)
{
sum[j]=mid[p];
p--;
j++;
}
sum[j]='\0';
return 0;
}
/***************************************/
int xn(char fnum[],int n)
{
char s1[max];
int i;
if(n==0)
{
strcpy(result,"1");
return 0;
}
for(i=0;i<max;i++)
{
result[i]='\0';
}
strcpy(result,fnum);
for(i=1;i<n;i++)
{
strcpy(s1,fnum);
fmul(s1,result);
strcpy(result,sum);
}
return 0;
}
/***************************************/
/***************************************/
/*主函数*/
int main()
{
char s1[max],s2[6];
int i;
/*******************/
int n,ln,ls;
char ch;
int m,j=0,fl[100];
char s[6];
char res[100][max];
/*******************/
m=0;
for(i=0;i<100;i++)
fl[i]=0;
while(cin>>s2>>n)
{
j=0;
i=0;
while(s2[i]!='\0')
{
if(s2[i]=='.')
{
ln=strlen(s2)-1-i;
fl[m]=ln;
}
else
{
s[j++]=s2[i];
}
i++;
}
s[j]='\0';
ln=ln*n;
xn(s,n);
ls=strlen(result);
i=0;
j=0;
while(result[i]!='\0')
{
if(i==(ls-ln))
{
res[m][j++]='.';
res[m][j++]=result[i++];
}
else
{
res[m][j++]=result[i++];
}
}
res[m][j]='\0';
m++;
}
//去除多出的零
for(i=0;i<m;i++)
{
j=strlen(res[i])-1;
while(j!=0&&fl[i]!=0)
{
if(res[i][j]!='0')
{
if(res[i][j]=='.')
res[i][j]='\0';
else
res[i][j+1]='\0';
break;
}
j--;
}
j=0;
while(res[i][j]!='\0')
{
if(res[i][j]!='0')
{
while(res[i][j]!='\0')
{
cout<<res[i][j++];
}
cout<<endl;
break;
}
j++;
}
}
return 0;
}