编程题——超长正整数相加

标签: 加法  string  长整数


编程题——超长正整数相加


题目描述:
请设计一个算法完成两个超长正整数的加法。

输入描述:
输入两个字符串数字

输出描述:
输出相加后的结果,string型

示例:
输入
99999999999999999999999999999999999999999999999999
1
输出
100000000000000000000000000000000000000000000000000


程序代码如下:



#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

string addString(string num1, string num2)
{
	int carry = 0;
	int i = num1.size() - 1, j = num2.size() - 1;
	string sum = "";
	while (i >= 0 || j >= 0)
	{
		if (i >= 0)
			carry += num1[i] - '0';
		if (j >= 0)
			carry += num2[j] - '0';
		sum += (char)(carry % 10 + '0');
		carry /= 10;
		i--;
		j--;
	}
	if (carry == 1)
		sum += '1';
	reverse(sum.begin(), sum.end());
	return sum;
}

int main()
{
	string num1, num2;
	while (cin >> num1 >> num2)
		cout << addString(num1, num2)<<endl;
	return 0;
}


程序运行结果如下:


在这里插入图片描述

原文链接:加载失败,请重新获取