7 solutions

  • 1
    @ 2023-8-16 10:24:12

    个人觉得此解法较为易懂。

    #include<bits/stdc++.h>
    using namespace std;
    
    string add_string(string s1, string s2){
    	vector<int> A,B,C;
    	for(int i=s1.size()-1;i>=0;i--){
    		A.push_back(s1[i]);
    	}
    	for(int i=s2.size()-1;i>=0;i--){
    		B.push_back(s2[i]);
    	}
    	if(A.size()<B.size()) return add_string(s2,s1);
    	
    	int t=0; //本位和,包含上一次的进位
    	for(int i=0;i<A.size();i++){
    		t += A[i]-'0';
    		if(i<B.size()) t += B[i]-'0';
    		C.push_back(t%10); //本位放进来
    		t /= 10; //这个时候t就变成了进位
    	}
    	if(t) C.push_back(t); //如果最后还有进位,要放进来
    	string ans;
    	for(int i=C.size()-1;i>=0;i--){
    		ans += to_string(C[i]);
    	}
    	return ans;
    }
    
    int main(){
    	string a,b;
    	cin>>a>>b;
    	
    	cout<<add_string(a,b);
    	
    	return 0;
    }
    

    Information

    ID
    66
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    8
    Tags
    # Submissions
    767
    Accepted
    105
    Uploaded By