题目描述
请设计一个算法完成两个超长正整数的加法。
接口说明
/*
请设计一个算法完成两个超长正整数的加法。
输入参数:
String addend:加数
String augend:被加数
返回值:加法结果
*/
public String AddLongInteger(String addend, String augend)
{
/*在这里实现功能*/
return null;
}
输入描述:
输入两个字符串数字
输出描述:
输出相加后的结果,string型
#include <iostream>
#include <string>
using namespace std;
string addlong(string &str1, string &str2)
{
string result = "";
int s1 = str1.size();
int s2 = str2.size();
if(s1 == 0)
return str2;
if(s2 == 0)
return str1;
// 处理长度一致
int t = s1 > s2 ? s1 : s2;
for(int i = t-s1 - 1; i >= 0; i--)
str1 = '0' + str1;
for(int i = t-s2 - 1; i >= 0; i--)
str2 = '0' + str2;
int flag = 0; // 进位标志
int temp;
for(int i = t-1; i >= 0; i--)
{
temp = (str1[i] - '0') + (str2[i] - '0') + flag;
result = char((temp%10) + '0') + result;
flag = temp/10;
}
if(flag == 1)
result = '1' + result;
return result;
}
int main()
{
string str1,str2;
while(cin >> str1 >> str2)
{
cout << addlong(str1,str2) << endl;
}
}