大数相加(字符串解法)

#include<iostream>
#include<algorithm>
#include<string>
#include<map>
#include<set>
#include<vector>
using namespace std;
//大数相加
vector<int> Add(vector<int> &left,vector<int>&right)
{
	int mlen, len, i, c = 0; 
	mlen = left.size() > right.size() ? left.size() : right.size();
	vector<int> result(mlen);
	if (left.size() > right.size())
	{
		len = left.size() - right.size();
		for (i = 0; i < len; i++)
		{
			right.insert(right.begin(), 0);
		}
	}
	else if (left.size() < right.size())
	{
		len = -left.size() + right.size();
		for (i = 0; i < len; i++)
		{
			left.insert(left.begin(), 0);
		}
	}
	int sum;
	for (i = mlen - 1; i >= 0;i--)
	{
	
		sum = left[i] + right[i] + c;
		result[i] = sum % 10;
		c = sum / 10;
	}
	if (c > 0)
	{ 
		result.insert(result.begin(), c);
	}
	return result;
}
void exchange(string Snum,vector<int> &Vnum)
{
	int remainder;
	vector<char> ch(Snum.size());
	for (int i = 0; i < Snum.size(); i++)
	{
		ch[i] = Snum[i];
		Vnum.push_back(ch[i]-'0');
	}
}
int main()
{ 
	long int num;
	string left,right;
	cin >> left>>right;
	vector<int> Ileft,Iright,result;
	exchange(left,Ileft);
	exchange(right, Iright);
    result=Add(Ileft, Iright);
	for (int i =0; i < result.size(); i++)
	{
		cout << result[i];
	}
	cout << endl;
	system("pause");
	return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值