求幂

来源:互联网 发布:mac文档转换成word 编辑:程序博客网 时间:2024/06/17 16:07

描述求R的n次幂(0.0<r<99.999,0<n<=25)

输入

每行输入两个数Rn

R值占1-6列,n8-9

输出

对应于每一行输入,输出Rn次幂

前导的0不要输出

无意义的0不要输出

如果结果是一个整数,不要输出小数点

最后一行是空行

样例输入

95.123 12
0.4321 20
5.1234 15
6.7592  9
98.999 10
1.0100 12

样例输出

548815620517731830194541.899025343415715973535967221869852721
.00000005148554641076956121994511276767154838481760200726351203835429763013462401
43992025569.928573701266488041146654993318703707511666295476720493953024
29448126.764121021618164430206909037173276672
90429072743629540498.107596019456651774561044010001
1.126825030131969720661201

题目来源

POJ

 

#include <stdio.h>#include <string.h>#define MAX 200char Multiply[MAX];void MultiplyAB(char A[],char B[]){int i,j,p,m=0,n=0,offset=0;int T[MAX]={0};for(j=strlen(B)-1;j>=0;--j){if(B[j]!='.'){p=offset++;for(i=strlen(A)-1;i>=0;--i){if(A[i]!='.'){T[p]+=(B[j]-'0')*(A[i]-'0');++p;}else{m=strlen(A)-1-i;}}}else{n=strlen(B)-1-j;}}for(i=0;i<p;++i){if(T[i]>=10){T[i+1]=T[i+1]+T[i]/10;T[i]%=10;}}for(i=0;p>=0;--p,++i){if(p!=m+n-1){Multiply[i]=T[p]+'0';}else{Multiply[i]='.';Multiply[++i]=T[p]+'0';}}Multiply[i]='\0';}void Filter(){int dot=0,i=0;while(i<strlen(Multiply)){if(Multiply[i++]=='.'){dot=1;}break;}if(dot==1){i=strlen(Multiply)-1;while(Multiply[i]=='0'){--i;}Multiply[i+1]='\0';}}main(){char a[MAX];unsigned int i,n;while(scanf("%s %d",a,&n)==2){Multiply[0]='1';Multiply[1]='\0';for(i=1;i<=n;++i){MultiplyAB(Multiply,a);}Filter();i=0;while(Multiply[i]=='0'){++i;}while(i<strlen(Multiply)){printf("%c",Multiply[i]);++i;}printf("\n");}printf("\n");}

不能AC

 

 

0 0
原创粉丝点击