1016-求幂
#include<iostream> using namespace std; #define max 200 int main() { int a[max]={0},n,e,j,k,q,set=0; char c[20]; while(cin>>c>>n) { int len=strlen(c),base=0,i,record=0; for(i=0;i<len;i++) { if(c[i]=='.') { record=len-i-1; continue; } base=base*10+c[i]-'0'; } if(record) { for(k=len-1;c[k]=='0';k--,record--) base/=10; } record*=n; for(q=base,i=0;i<max;i++,q/=10) { a[i]=q%10; } for(j=0;j<n-1;j++) { for(i=0;i<max;i++) { a[i]=a[i]*base+set; set=a[i]/10; a[i]=a[i]%10; } } for(i=max-1;i>=0;i--) if(a[i]!=0) break; if(record>i) { cout<<"."; for(e=record-1;e>=0;e--) { cout<<a[e]; } } else { for(;i>record-1;i--) { cout<<a[i]; } if(i>=0) cout<<"."; for(;i>=0;i--) cout<<a[i]; } cout<<endl; } return 0; }
描述
求R的n次幂(0.0<r<99.999,0<n<=25)
输入
每行输入两个数R和n
R值占1-6列,n占8-9列
输出
对应于每一行输入,输出R的n次幂
前导的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