老傻非常喜欢购买理财产品,而且这款理财产品被推销人员吹得特别高,对于贪财的老傻来说正中下怀,于是在心里盘算着买了它,自己就是亿万富豪,现需要你编写一个程序,帮老傻计算其收益,老傻的投入是R(0<R<99.999),经过n个月后其精确收益为R^n(R的n次方,n<=30)。
第一行是测试数据组数T,每组数据占一行,对应于R和n
对于每组测试数据,输出一行R^n的精确值。首尾无意义的0不要输出,如果是整数,则不要输出小数点。
2
95.123 12
0.001 10
548815620517731830194541.899025343415715973535967221869852721
.000000000000000000000000000001
这道题难度比较大
1 #include<iostream> 2 #include<string> 3 using namespace std; 4 int main(){ 5 int h,g; 6 cin>>h; 7 for(g=0;g<h;g++){ 8 string m; 9 int n,len,i,j,p=0,nm=0,num,wd=1,c,s; 10 int ms[126]={0}; 11 ms[0]=1; 12 cin>>m>>n; 13 len=m.length(); 14 for(i=0;i<len;i++){ 15 if(m[i]==‘.‘){ 16 p=len-1-i; 17 p=p*n; 18 } 19 else{ 20 num=m[i]-‘0‘; 21 nm=nm*10+num; 22 } 23 } 24 for(i=0;i<n;i++){ 25 c=0; 26 for(j=0;j<wd;j++){ 27 s=ms[j]*nm+c; 28 ms[j]=s%10; 29 c=s/10; 30 } 31 while(c!=0){ 32 ms[j++]=c%10; 33 c=c/10; 34 } 35 wd=j; 36 } 37 if(wd<=p){ 38 cout<<‘.‘; 39 for(i=0;i<p-wd;i++){ 40 cout<<‘0‘; 41 } 42 for(i=wd-1;i>=0;i--){ 43 cout<<ms[i]; 44 } 45 } 46 else{ 47 i=0; 48 while(ms[i]==0&&i<p){ 49 i++; 50 } 51 for(j=wd-1;j>=i;j--){ 52 if(j+1==p){ 53 cout<<‘.‘; 54 } 55 cout<<ms[j]; 56 } 57 } 58 cout<<endl; 59 } 60 return 0; 61 }
原文:https://www.cnblogs.com/zq-dmhy/p/11084751.html