hdoj 1002 sum problem(超大数相加)
2017-11-30 18:19
267 查看
思路:因为是超大数,所以要用字符数组进行存储,并且在数组的基础上进行计算
代码如下:
代码如下:
#include <stdio.h> #include <stdlib.h> #include <string.h> /* run this program using the console pauser or add your own getch, system("pause") or input loop */ int main(int argc, char *argv[]) { char a[1010]; char b[1010]; int num1[1000]; int num2[1000]; int sum[1001]; int num1_len; int num2_len; int t; int t1; int i; int x; int y; scanf("%d",&t); for(t1=1;t1<=t;t1++) //数组初始化,避免影响下一次循环 { memset(num1,0,sizeof(int)*1001); memset(num2,0,sizeof(int)*1 4000 001); memset(sum,0,sizeof(int)*1001); for(i=0;i<1010;i++) { a[i]='\0'; b[i]='\0'; } x=0; scanf("%s %s",a,b); num1_len=strlen(a); num2_len=strlen(b); for(i=num1_len-1;i>=0;i--) //反序存储 { num1[i]=(int)a[x]-(int)'0'; x++; } x=0; for(i=num2_len-1;i>=0;i--) //反序存储 { num2[i]=(int)b[x]-(int)'0'; x++; } if(num1_len>=num2_len) //小学加法进位 { for(i=0;i<num1_len;i++) { if(num1[i]+num2[i]>9) { sum[i]+=num1[i]+num2[i]-10; sum[i+1]++; } else { sum[i]+=num1[i]+num2[i]; } } } else { for(i=0;i<num2_len;i++) { if(num1[i]+num2[i]>9) { sum[i]+=num1[i]+num2[i]-10; sum[i+1]++; } else { sum[i]+=num1[i]+num2[i]; } } } printf("Case %d:\n",t1); printf("%s + %s = ",a,b); for(i=1000;i>=0;i--) //判断sum数组从哪一位开始最后的结果的第一个数 { if(sum[1000]==1) { y=1000; break; } if(sum[i]==0 && sum[i-1]!=0) { y=i-1; break; } } for(i=y;i>=0;i--) //输出最后的结果 { printf("%d",sum[i]); } printf("\n"); if(t1!=t) printf("\n"); } return 0; }
相关文章推荐
- hdoj1002(A+B problem II 大数相加 c语言
- HDOJ 1002 A + B Problem II ( 大数相加)
- HDOJ 1002 A + B Problem II(大数相加)
- HDOJ 1002 A+B problem Ⅱ大数相加
- HDOJ1002题A + B Problem II,2个大数相加
- HDOJ1002题A + B Problem II,2个大数相加
- HDOJ 1002 A + B Problem II 大整数相加高效率版的C语言实现
- HDOJ 1002 A + B Problem II
- HDOJ1002 A + B Problem II
- 【每日一题(19)】A + B Problem II(大数相加) HDU - 1002
- HDOJ - 1002 - A + B Problem II(水题)
- HDU 1002 A + B Problem II 【大数相加】(3.16)
- hdoj - 1258 Sum It Up && hdoj - 1016 Prime Ring Problem (简单dfs)
- hdu 1002 A + B Problem II 大数相加
- 1002 1002 A + B Problem II大数相加
- 杭电 1002 A + B Problem II【大数相加】
- hdu 1002 A + B Problem II(大正整数相加)
- 大数相加 HDOJ1002
- HDOJ 2058 The sum problem
- HDOJ2058_The sum problem