High-precision addition acwing791

#include<iostream>
#include<vector>

using namespace std;

vector<int> add(vector<int> &A,vector<int> &B)//带上&可以加快速度
{
    
    
	if(A.size()<B.size()) return (B,A);
	int t=0;
	vector<int> C;
	for(int i=0;i<A.size();i++)
	{
    
    
		t+=A[i];
		if(i<B.size()) t+=B[i];
		C.push_back(t%10);
		t/=10;
	}
	if(t) C.push_back(t);//可能会生下t,所以要判断一下
	return C;
}

int main()
{
    
    
	string a,b;
	vector<int> A,B,C;
	cin>>a>>b;
	for(int i=a.size()-1;i>=0;i--) A.push_back(a[i]-'0');//要注意-1操作
	for(int i=b.size()-1;i>=0;i--) B.push_back(b[i]-'0');//需要从字符型变为整型 所以要-'0'
	C=add(A,B); 
	for(int i=C.size()-1;i>=0;i--) printf("%d",C[i]);
	cout<<endl;
	return 0;
}
// C = A + B, A >= 0, B >= 0
vector<int> add(vector<int> &A, vector<int> &B)
{
    
    
    if (A.size() < B.size()) return add(B, A);

    vector<int> C;
    int t = 0;
    for (int i = 0; i < A.size(); i ++ )
    {
    
    
        t += A[i];
        if (i < B.size()) t += B[i];
        C.push_back(t % 10);
        t /= 10;
    }

    if (t) C.push_back(t);
    return C;
}

Guess you like

Origin blog.csdn.net/qq_47874905/article/details/109429241