题解 | #高精度整数加法#
高精度整数加法
http://www.nowcoder.com/practice/49e772ab08994a96980f9618892e55b6
#include <bits/stdc++.h>
using namespace std;
long str2int(string s){
long res = 0;
for(int i = 0; i < s.size(); i++){
res = res * 10 + (s[i] - '0');
//cout << " " << res << endl;
}
//cout << res << endl;
return res;
}
int main(){
string A = "";
string B = "";
while(cin >> A >> B){
/*long s1Num = str2int(s1);
long s2Num = str2int(s2);
cout << s1Num + s2Num << endl; //会超出范围*/
int i = A.size() - 1; int j = B.size() - 1;
string res = "";
int carry = 0; //进位
while(i >= 0 || j >= 0){
int digitA = i >= 0 ? A[i--] - '0' : 0;
int digitB = j >= 0 ? B[j--] - '0' : 0;
int sum = digitA + digitB + carry;
carry = sum / 10; //是否有进位
sum = sum % 10; //当前的非进位和
res += to_string(sum);
}
if(carry == 1) res += "1"; //最后的进位 //
reverse(res.begin(), res.end()); //
cout << res << endl;
}
return 0;
}
华为题库题解 文章被收录于专栏
牛客华为题库的题解