提交时间:2023-10-10 13:27:02
运行 ID: 106192
#include <bits/stdc++.h> using namespace std; string a_,b_,a,b; int c[114514]; int maxl; signed main() { cin >> a_; cin >> b_; //反过来 for(int i = a_.length()-1; i >= 0; i--) { a += a_[i]; } for(int i = b_.length()-1; i >= 0; i--) { b += b_[i]; } //补零 if(a_.length()>b_.length()) { for(int i = 1; i <= a_.length()-b_.length(); i++)b+='0'; } if(b_.length()>a_.length()) { for(int i = 1; i <= b_.length()-a_.length(); i++)a+='0'; } maxl = max(a.length(),b.length()); //模拟竖式 for(int i = 0; i < maxl; i++) { c[i] += a[i]+b[i]-'0'-'0';//加起来,注意是+=,因为有上一个的进位 c[i+1] += c[i]/10;//进位到下一位 c[i]%=10;//完成进位了,多出来的不要了 } //例如99+1 = 100, 那么会产生多一位 if(c[maxl]) { maxl++; } //输出,因为算的是反过来的,所以输出再反过来,就正常了 for(int i = maxl-1; i >= 0; i--) { cout << c[i]; } return 0; }