ZOJ 1292 Integer Inquiry
来源:互联网 发布:天翼飞young软件下载 编辑:程序博客网 时间:2024/05/01 01:29
ZOJ 1292 Integer Inquiry {4405}
话说这个题做了2天,现在越来越觉得方法的重要性,也能自己想到一些方法去实现。所以有的时候题目的思路就需要时间去一点点更改或者完善。
题意:给出最多100个很大的整数,输出这些超大整数的和。
思路:最主要的思路是用字符接收并且反转,因为每个数字的位数不一样,要从每个数字的最后一位冲齐做满十进一这样比较简单。
代码注释写有特别要注意的细节情况:
#include<stdio.h>#include<string.h>int main(){int i,j,k,n,N,g[200],sum[200],m,max,t,h;char a[200];scanf("%d",&N);for(i = 1;i<=N;i++){for(k = 0;k<=150;k++){sum[k] = 0;}max = 0;for(j = 1;;j++){getchar();scanf("%s",a); m = strlen(a)-1; if(a[0]=='0'&&m==0)break;for(k = 0;k<=m;k++){ //数字会出现开头有 0 的情况if(a[k]!='0')break;}h = k;for(k = 0;k<=m-h;k++){a[k] = a[k+h];}m = m-h;if(m>max)max = m;for(k = 0;k<=m;k++){g[k] = a[k]-'0';}for(k = 0;k<=m/2;k++){ //数字反转t = g[m-k];g[m-k] = g[k];g[k] = t;}for(k = 0;k<=m;k++){ //下标处理到本次收进的数字长度sum[k] = sum[k]+g[k];if(sum[k]>=10){sum[k+1] = sum[k+1]+sum[k]/10;sum[k] = sum[k]%10;}}for(k = 0;k<=max;k++){ //但是下标一定要处理到所有收进的数字的最大长度,比如999+1;if(sum[k]>=10){sum[k+1] = sum[k+1]+sum[k]/10;sum[k] = sum[k]%10;}}if(sum[max+1]>0){ //进位max++;}if(sum[max+1]>=10){ //最多可能近进 2 位sum[max+2] = sum[max+2]+sum[max+1]/10;sum[max+1] = sum[max+1]%10;max++;}}for(k = max;k>=0;k--){printf("%d",sum[k]);}printf("\n");if(i!=N)printf("\n");}return 0;}
- ZOJ 1292 Integer Inquiry
- ZOJ 1292 Integer Inquiry
- zoj 1292 Integer Inquiry
- ZOJ 1292 Integer Inquiry
- ZOJ 1292 Integer Inquiry
- zoj 1292 Integer Inquiry
- zoj 1292 Integer Inquiry【大数】
- zoj 1292 Integer Inquiry(大数)
- ZOJ 1292/HDU 1047 Integer Inquiry
- Integer Inquiry
- Integer Inquiry
- Integer Inquiry
- Integer Inquiry
- Integer Inquiry
- Integer Inquiry
- Integer Inquiry
- Integer Inquiry
- Integer Inquiry
- 黑马程序员_java入门_继承
- 你为啥喜欢软件测试
- 经验
- 唠唠叨叨2012
- LINUX-C成长之路(八):存储类,动态内存
- ZOJ 1292 Integer Inquiry
- 记一次WPF莫名崩溃的经历
- 软件测试面试问题及回答
- 转载_KEIL编译选项microlib和标准lib的差异
- 赋值
- java和C++ C比较
- How to install skype in Ubuntu (12.04) system?
- 0MQ绑定Delphi版-说明
- 选用ibatis和hibernate的区别