看看这个对不对..
#include<stdio.h>
void main()
{
char s[7];
int i,j,n,m,k,flag;
long int a[100]={0};
char st[395]={'0'};
a[0]=1;
while(scanf("%s %d",s,&n)!=EOF)
{
for(i=0;i<100;i++)
a[i]=0;
for(i=0;i<396;i++)
st[i]='\0';
st[0]='0';
a[0]=1;
m=0;
j=1;
flag=-1;
for(i=0;s[i];i++);
k=i-1;
for(i--;i>=0;i--)
{
if(s[i]=='.')
{
flag=(k-i)*n;
continue;
}
else
{
m+=(s[i]-'0')*j;
j*=10;
}
}
while(n--)
{
for(i=0;i<100;i++)
a[i]*=m;
for(i=0;i<100;i++)
{
a[i+1]=a[i+1]+(a[i]/10000);
a[i]=a[i]%10000;
}
}
for(i=0,k=0;i<99;i++,k+=4)
{
st[k+3]=a[i]/1000+'0';
a[i]%=1000;
st[k+2]=a[i]/100+'0';
a[i]%=100;
st[k+1]=a[i]/10+'0';
a[i]%=10;
st[k]=a[i]+'0';
}
for(i=395;i>=flag;i--)
{
if(st[i]!='0')
break;
}
for(j=0;j<flag;j++)
{
if(st[j]!='0')
break;
}
if(i<j)
printf("0\n");
else
{
for(i;i>=j;i--)
{
if(i==flag-1)
printf(".");
printf("%c",st[i]);
}
printf("\n");
}
}
}








