7 solutions
-
1
个人觉得此解法较为易懂。
#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