poj 1001 求高精度幂
2013-07-13 11:22
302 查看
本题的测试用例十分刁钻,必须要考虑到很多的细节问题,在这里给出一组测试用例及运行结果:
95.123 12
548815620517731830194541.899025343415715973535967221869852721
0.4321 20
.00000005148554641076956121994511276767154838481760200726351203835429763013462401
5.1234 15
43992025569.928573701266488041146654993318703707511666295476720493953024
6.7592 9
29448126.764121021618164430206909037173276672
98.999 10
90429072743629540498.107596019456651774561044010001
1.0100 12
1.126825030131969720661201
.00001 1
.00001
.12345 1
.12345
0001.1 1
1.1
1.1000 1
1.1
10.000 1
10
000.10 1
.1
000010 1
10
000.10 1
.1
0000.1 1
.1
00.111 1
.111
0.0001 1
.0001
0.0001 3
.000000000001
0.0010 1
.001
0.0010 3
.000000001
0.0100 1
.01
0.0100 3
.000001
0.1000 1
.1
0.1000 3
.001
1.0000 1
1
1.0000 3
1
1.0001 1
1.0001
1.0001 3
1.000300030001
1.0010 1
1.001
1.0010 3
1.003003001
1.0100 1
1.01
1.0100 3
1.030301
1.1000 1
1.1
1.1000 3
1.331
10.000 1
10
10.000 3
1000
10.001 1
10.001
10.001 3
1000.300030001
10.010 1
10.01
10.010 3
1003.003001
10.100 1
10.1
10.100 3
1030.301
99.000 1
99
99.000 3
970299
99.001 1
99.001
99.001 3
970328.403297001
99.010 1
99.01
99.010 3
970593.059701
99.100 1
99.1
99.100 3
973242.271
99.998 1
99.998
0.0010 1
.001
下面是AC代码:
95.123 12
548815620517731830194541.899025343415715973535967221869852721
0.4321 20
.00000005148554641076956121994511276767154838481760200726351203835429763013462401
5.1234 15
43992025569.928573701266488041146654993318703707511666295476720493953024
6.7592 9
29448126.764121021618164430206909037173276672
98.999 10
90429072743629540498.107596019456651774561044010001
1.0100 12
1.126825030131969720661201
.00001 1
.00001
.12345 1
.12345
0001.1 1
1.1
1.1000 1
1.1
10.000 1
10
000.10 1
.1
000010 1
10
000.10 1
.1
0000.1 1
.1
00.111 1
.111
0.0001 1
.0001
0.0001 3
.000000000001
0.0010 1
.001
0.0010 3
.000000001
0.0100 1
.01
0.0100 3
.000001
0.1000 1
.1
0.1000 3
.001
1.0000 1
1
1.0000 3
1
1.0001 1
1.0001
1.0001 3
1.000300030001
1.0010 1
1.001
1.0010 3
1.003003001
1.0100 1
1.01
1.0100 3
1.030301
1.1000 1
1.1
1.1000 3
1.331
10.000 1
10
10.000 3
1000
10.001 1
10.001
10.001 3
1000.300030001
10.010 1
10.01
10.010 3
1003.003001
10.100 1
10.1
10.100 3
1030.301
99.000 1
99
99.000 3
970299
99.001 1
99.001
99.001 3
970328.403297001
99.010 1
99.01
99.010 3
970593.059701
99.100 1
99.1
99.100 3
973242.271
99.998 1
99.998
0.0010 1
.001
下面是AC代码:
#include<stdio.h> #include<string.h> int c[160]; int a[160]; int b[160]; int lenb,lenxiao,len; void cal() {//计算部分 int i,j,k; memset(c,0,sizeof(c)); if(lenxiao==0){ len=6; } else{ len=5; } for(i=0,k=0;i<len;i++){ for(j=0;j<lenb;j++){ c[i+j+1]+=a[i]*b[j]; } } for(i=len+lenb-1;i>0;i--){ if(c[i]>=10){ c[i-1]+=c[i]/10; c[i]=c[i]%10; } } if(c[0]==0){ for(i=1;i<=len+lenb-1;i++){ b[i-1]=c[i]; } lenb=len+lenb-1; } else{ for(i=0;i<=len+lenb-1;i++){ b[i]=c[i]; } lenb=len+lenb; } } void shuchu(int b[],int lenb){// 输出部分 int i,j; for(i=0;i<lenb-lenxiao;i++){ if(b[i]!=0) { break; } } if(i==lenb){ printf("0\n"); return; } for(j=lenb-1;j>=lenb-lenxiao;j--){ if(b[j]!=0){ break; } } if(j==i&&b[i]==0){ printf("0\n"); return ; } for(;i<=j;i++){ if(i==lenb-lenxiao){ printf("."); } printf("%d",b[i]); } printf("\n"); } int main(int argc,char ** argv){ int power; int i,j,k; char input[5]; while(scanf("%s",input)!=EOF){ scanf("%d",&power); memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); lenxiao=0; lenb=0;len=0; for(i=0,j=0,lenb=0;i<=5;i++){ if(input[i]=='.'){ lenxiao = 5-i; continue; } a[j++]=b[j]=input[i]-48; lenb++; } lenxiao*=power; for(i=0;i<power-1;i++){ cal(); } shuchu(b,lenb); } return 0; }
相关文章推荐
- POJ1001 Exponentiation 高精度
- poj&nbsp;1001&nbsp;Exponentiation&nbsp;高精度
- poj 1001 Exponentiation(高精度运算)
- Hdu 1063 & Poj 1001 Exponentiation (java 高精度实数 去除首尾0)
- POJ 1001(浮点数高精度幂) 解题报告
- POJ1001 Exponentiation 高精度
- poj1001 高精度
- 20140709 【高精度浮点数】POJ 1001 Exponentiation
- poj 1001 求高精度幂
- POJ 1001 Exponentiation【高精度用java】
- poj 1001 Exponentiation(高精度运算)
- POJ 1001(高精度乘法 java的2种解法)
- POJ 1001 Exponentiation 高精度小数相乘
- java高精度 poj1001
- POJ 1001:Exponentiation —— 高精度浮点数运算
- POJ 1001 高精度乘法加小数点处理
- POJ1001 高精度乘法
- poj_1001 高精度浮点
- poj 1001 Exponentiation(高精度运算)
- NYOJ 155 POJ 1001 求高精度幂