大数加法
2013-09-08 19:42
399 查看
题目描述:
十进制大数的加法运算。
输入描述:
输入文件的第1行为一个整数N,表示输入文件中接下来有N组数据。每组数据最多包含100行。每一行由一个非常长的十进制整数组成,这个整数的长度不会超过100个字符而且只包含数字,每组数据的最后一行为0,表示这组数据结束。
每组数据之间有一个空行。
输出描述:
对输入文件中的每组数据,输出它们的和。每两组数据的输出之间有一个空行。
样例输入:
1
99999278961257987
126792340765189
998954329065419876
432906541
23
0
样例输出:
1099080400800349616
十进制大数的加法运算。
输入描述:
输入文件的第1行为一个整数N,表示输入文件中接下来有N组数据。每组数据最多包含100行。每一行由一个非常长的十进制整数组成,这个整数的长度不会超过100个字符而且只包含数字,每组数据的最后一行为0,表示这组数据结束。
每组数据之间有一个空行。
输出描述:
对输入文件中的每组数据,输出它们的和。每两组数据的输出之间有一个空行。
样例输入:
1
99999278961257987
126792340765189
998954329065419876
432906541
23
0
样例输出:
1099080400800349616
#include<cstdio> #include<cstring> using namespace std; int main() { char buffer[200];//输入的数字 int array[200][200];//逆序存储每个数字 int ans[200]; int i,j,k;//循环变量 int num_integers;//数字个数 int len,maxlen=0;//数字长度、最长数字的长度 int sum,carry=0,digit;//每位求和后的总和、进位和结果 int n;//测试数据数 scanf("%d",&n); while(n--) { memset(buffer,0,sizeof(buffer)); memset(array,0,sizeof(array)); memset(ans,0,sizeof(ans)); for(num_integers=0;num_integers<200;num_integers++) { gets(buffer); if(strcmp(buffer,"0")==0) break; len=strlen(buffer); if(len>maxlen) maxlen=len; for(i=0;i<len;i++) { array[num_integers][i]=buffer[len-1-i]-'0'; //printf("%d",array[num_integers][i]); } } for(j=0;j<maxlen+2;j++) { sum=carry; for(k=0;k<num_integers;k++) sum+=array[k][j]; carry=sum/10; digit=sum%10; ans[j]=digit; //printf("%d",ans[j]); } for(i=maxlen+2;i>=0;i--) { if(ans[i]!=0) break; } while(i>=0) printf("%d",ans[i--]); puts("\n"); } return 0; }
相关文章推荐
- hdu 1002 hdu 1047 大数加法
- HDU1753(大数加法)
- uva 10523 Very Easy !!! 大数模拟加法和乘法
- 大数加法(仅能处理正数)
- Hdu oj 1002 A + B Problem II(大数加法)
- 51nod 1005 大数加法(可为负数)
- uva 465 - Overflow 大数加法 大数乘法
- 大数加法
- 大数乘法与大数加法 java实现
- A + B Problem II(大数基础加法)
- Integer Inquiry【大数的加法举例】
- A + B Problem II 大数加法
- 1011-大数加法
- Integer Inquiry(大数加法)
- 高精度大数加法
- NYOJ 880 A+B Problem II(大数加法)
- 大数的加法和乘法,高精度
- HDUOJ-------1753大明A+B(大数之小数加法)
- noj1011 大数加法 思路分析
- 大数加法(瑕疵)