Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:终于ac, 总结下In Reply To:终于ac, 总结下 Posted by:robertbean at 2011-09-06 20:05:36 > 新手呵呵,自我反省。 > > 输入时 没有检查 = EOF, 结果导致 ole。 > > 数据考虑不全面。 借鉴了别人的测试数据改了好久。基本上只要稍微另类点的数据1就有问题。 > > 最严重的时没有仔细思考。想当然的作。最初的代码在计算两个书相乘的时候,把乘数和被乘数都用了数组表示。 这样,日工作量大了nn倍,还各种混乱。 > > 后来查测试数据时也看看别人怎么写的。才发现,把乘数存储在数组中就好了,被乘数直接记成证书就ok的。慢慢成长吧。。。把代码贴贴,ac了,暂时实在懒得再改了,自我留念啦。 > #include <stdio.h> > > int main(void) > { > char num[7],output[105]; > int res[105],tRes[105], power,pPos,tPos,i,j,h,k,fact;//,posHold; > > int first=0; > while (scanf("%s %d", num, &power)!=EOF) > { > if (!first) > first = 1; > else > { > printf("\n"); > } > fact = 0; > for (i=0; i<=5; i++) > { > if (num[i] != '.') > fact = fact*10+num[i] - '0'; > else > pPos = i; > } > //posHold = pPos; > if (!fact) > ; > else > { > for (i=0; i<105; i++) res[i] = 0; > for (i=0,j=0; i<=5; i++) > { > if (num[i] != '.') > { > res[100+j] = num[i]-'0'; > j++; > } > } > tPos = 100; > > for (i=0; i<power-1; i++) > { > for (j=0; j<105-tPos; j++) tRes[j] = fact*res[104-j]; > for (k=0; k<105; k++) res[k] = 0; > for (h=0; h<j; h++) > { > k=h; > while (tRes[h]>0) > { > res[104-k] += tRes[h]%10; > tRes[h] /= 10; > k++; > } > if (105-k < tPos) > tPos = 105-k; > } > } > int tt; > for (i=104,k=0; i>=tPos; i--) > { > tt = (res[i]+k)/10; > res[i] = (res[i]+k)% 10; > k = tt; > } > > h = k; > i = tPos-1; > while (h>0 && i) > { > res[i] = h%10; > i--; > h /=10; > } > > for (i=tPos,h=0; i<105; i++,h++) output[h] = res[i]+'0'; > output[h] = '\0'; > > pPos = (5-pPos)*power; > if( h-pPos < 0) > { > printf("."); > int temp = h-pPos; > char zero[105]; > int t=0; > while (temp++<0) > zero[t++] = '0'; > zero[t] = '\0'; > > for (i=h-1; output[i] =='0'; i--); > if (output[i] == '.') > output[i] = '\0'; > else > output[i+1] = '\0'; > /*i=0; > while (output[i]=='0') > i++; > for (h=0; output[i]!='\0'; h++,i++) > output[h] = output[i]; > output[h] = '\0'; > */ > printf("%s%s",zero,output); > //printf("%s",zero); > > } > else > { > for (j=h; j>=h-pPos; j--) > { > output[j+1] = output[j]; > } > output[j+1] = '.'; > h++; > > > for (i=h-1; output[i] =='0'; i--); > if (output[i] == '.') > output[i] = '\0'; > else > output[i+1] = '\0'; > i=0; > while (output[i]=='0') > i++; > for (h=0; output[i]!='\0'; h++,i++) > output[h] = output[i]; > output[h] = '\0'; > > printf("%s",output); > } > } > } > > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator