P1601 A+B Problem(高精)(C++)

题目背景

题目描述

高精度加法,相当于a+b problem,不用考虑负数.

输入格式

分两行输入。a,b<=10^{500}a,b<=10
500

输出格式

输出只有一行,代表a+ba+b的值

输入输出样例

输入 #1

1
1

输出 #1

2

思路

纯粹的高精度运算,模拟加法过程,唯一需要注意的是高位在后方便进位;

源码

#include
#include
using namespace std;

vector<int> sum(vector<int> a,vector<int> b)
{
	vector<int> c;
	int t = 0;
	for (int i = 0; i < a.size() || i < b.size(); i++)
	{
		if(i >= b.size())
			t += a[i];
		else if(i>=a.size())
			t += b[i];
		else
			t += a[i] + b[i];
		c.push_back(t % 10);
		t = t / 10;
	}
	if (t != 0)
		c.push_back(t);
	return c;
}
int main()
{
	string s;
	vector<int> a, b, c;
	cin >> s;
	for(int i=0;i<s.length();i++)
		a.push_back(s[s.length() - i - 1]-'0');
	cin >> s;
	for (int i = 0; i < s.length(); i++)
		b.push_back(s[s.length() - i - 1]-'0');
	c = sum(a, b);
	//cout << endl;
	for (int i = c.size() - 1; i >= 0; i--)
		cout << c[i];
	return 0;
}

你可能感兴趣的:(算法)