大数求和

来源:互联网 发布:乐清知临寄宿学校招聘 编辑:程序博客网 时间:2024/06/05 04:55

描述: 

给定两个非常大的正整数A和B,位数在50至100之间。求C=A+B;

题目类别: 字符串 
难度: 中级 
运行时间限制: 10Sec 
内存限制: 128MByte 

输入: 

因为A和B很大,从高位到低位,以字符串的形式输入两行数字A和B。A和B的位数在50至100之间。

输出: 
以字符串形式,输出一行,表示A和B的和。

样例输入: 

111111111111111111111111111111111111111111111111111111111
22222222222222222222222222222222222222222222222222

样例输出: 

33333333333333333333333333333333333333333333333333

代码:

#include<iostream>#include<string>using namespace std;string add(string s1, string s2) {int length1 = s1.size();int length2 = s2.size();if (length1 == 0 && length2 !=0) {return s2;}if (length1 != 0 && length2 == 0) {return s1;}if (length1 == 0 && length2 == 0) {return "0";}    string result = "";int c = 0,num1,num2,sum;for (int i = length1 - 1, j = length2 - 1; i >= 0 || j >= 0 || c > 0; i--, j--) {num1 = i >= 0 ? s1[i] - '0' : 0;num2 = j >= 0 ? s2[j] - '0' : 0;sum = num1 + num2 + c;c = sum / 10;result = result.insert(result.begin(), sum % 10 + '0');}return result;}int main(){string s1;string s2;while (cin>>s1>>s2) {cout<<add(s1,s2)<<endl;}return 0;}

结果:



0 0
原创粉丝点击