加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

大数相加(字符串解法)

发布时间:2020-12-14 02:54:30 所属栏目:大数据 来源:网络整理
导读:#includeiostream#includealgorithm#includestring#includemap#includeset#includevectorusing namespace std;//大数相加vectorint Add(vectorint left,vectorintright){int mlen,len,i,c = 0; mlen = left.size() right.size() ? left.size() : right.size(
#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;

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读