#include<stdlib.h>
#include<stdio.h>
#include <string.h>
void multiply(char *a,char *s)
{
int i,j;
int d[130]={0};
char res[130]={0};
for(i=0;i<strlen(a);i++)//a 的下标()
for(j=0;j<strlen(s);j++)//s的下标
if(i+j<(strlen(s)+strlen(a)))
{
d[i+j]+=(a[i]-'0')*(s[j]-'0');
}
int inc=0;
for(i=(strlen(s)+strlen(a))-2;i>=0;i--){
if(d[i]>9)
{
if(i==0)
inc=d[i]/10;
else
d[i-1]+=d[i]/10;
d[i]=d[i]%10;
}
res[i]=d[i]+'0';
}
memset(s,0,sizeof(s));
if(inc!=0)
{
sprintf(s,"%d",inc);
}
strcat(s,res);
}
void exponentiation(char* str,int n)
{
char tmp[130]={0};
strcpy(tmp,str);
int i=0;
for(i=0;i<n-1;i++)
{
multiply(tmp,str);
}
}
void result(char* str1,int len,int n )
{
char res[130]={0};
if(strlen(str1)>len*n)
{
strncpy(res,str1,strlen(str1)-len*n);
strcat(res,".");
strcat(res,&str1[strlen(str1)-len*n]);
}
else
{
res[0]='.';
for(int i=0;i<len*n-strlen(str1);i++)
res[i+1]='0';
strcat(res,str1);
}
int i=0;
for( i=strlen(res)-1;(i>0)&&(res[i]=='0');i--)
{
res[i]=0;
}
if(res[i]=='.') res[i]=0;
strcpy(str1,res);
}
int main()
{
char s[7]={0};int n=0;
while(scanf("%s%d",s,&n)!=EOF)
{
int i=0;
int len_str1=0,len_str2=0;
char str1[130]={0};char str2[130]={0};
int cnt=0;
int isInteger=1;
for( i=0 ;i<strlen(s);i++)
if(s[i]=='.')
{
isInteger=0;
cnt=i;
}
if(!isInteger)//如果存在小数点
{
memcpy(str1,s,cnt*sizeof(char));//小数点左边的整数部分复制给str1
if(atoi(str1)==0)
{
// printf("整数部分为0\n");
len_str1=0;
len_str2=strlen(s)-strlen(str1)-1;
memset(str1,0,sizeof(str1));//
memcpy(str1,&s[cnt+1],(strlen(s)-cnt)*sizeof(char)-1);//整数部分为0,将小数点右面的小数部分复制给str1
}
else{//小数点左边的整数部分已经复制给str1
// printf("整数部分不为0\n");
memset(str2,0,sizeof(str2));
memcpy(str2,&s[cnt+1],(strlen(s)-cnt)*sizeof(char)-1);
if(atoi(str2)==0)
{
//printf("整数部分不为0,小数部分为0,str1不需要加小数部分\n");
}
else
{
//printf("整数部分不为0,小数部分不为0\n");
len_str1=strlen(str1);
len_str2=strlen(str2);
strcat(str1,str2);
}
}
exponentiation(str1,n);
result(str1,len_str2,n);
}
else//如果不存在小数点
{
if((!strcmp(str1,"1"))||n==0)
{
printf("1\n");
continue;
}
strcpy(str1,s);
exponentiation(str1,n);
}
printf("%s\n",str1);
}
}