Sample Output 完全正确,但提交后过不了,懒得找瑕疵了
#include<stdio.h>
#include<string.h>
void power(const int num[],const int n,int point)
{
int i,j,k;
int len,ans[200],temp[200];
for(i=0;i<200;i++){ans[i]=0;temp[i]=0;}
for(i=0;i<n;i++) //计算n次幂
{
if(i==0)
{
for(j=0;j<5;j++)ans[j]=num[j];
len=5;
}
else
{
for(j=0;j<len;j++)
{
temp[j]=ans[j];ans[j]=0;
}
for(j=0;j<5;j++)
{
for(k=0;k<=len;k++)
{
ans[j+k] += num[j]*temp[k];
ans[j+k+1] += ans[j+k]/10;
ans[j+k] = ans[j+k]%10;
}
}
len += 5;
}
}
point *= n; //小数点位置
while(ans[len-1]==0 && len>point)len--; //输出的起始位置
j=0;
while(ans[j]==0 && j<point)j++; //结束的位置
for(i=len-1;i>=j;i--)
{
if((i+1)==point)printf("."); //输出小数点
printf("%d",ans[i]);
}
printf("\n");
}
int main(void)
{
char str[7],ch;int i;
int n,num[5];
while(scanf("%s %d",str,&n)==2)
{
int point;
if(str[1]=='.')
{
point=4;
str[1]=str[2];
}
if(str[2]=='.')point=3;
num[0]=(int)(str[5]-'0');
num[1]=(int)(str[4]-'0');
num[2]=(int)(str[3]-'0');
num[3]=(int)(str[1]-'0');
num[4]=(int)(str[0]-'0');
power(num,n,point);
}
return 0;
}