int t = 0; //记录进位 for (int i = 0; i < A.size() || i < B.size(); i ++ ) // 就是一个竖式计算的过程 { if (i < A.size()) t += A[i]; if (i < B.size()) t += B[i]; C.push_back(t % 10); t /= 10; }
if (t) C.push_back(1); return C; }
intmain() { string a, b; vector<int> A, B;
cin >> a >> b; // 将a、b倒着存进去,便于从低位开始进行运算 for (int i = a.size() - 1; i >= 0; i -- ) A.push_back(a[i] - '0'); for (int i = b.size() - 1; i >= 0; i -- ) B.push_back(b[i] - '0');
auto C = add(A, B); // C 也是倒着存储的 所以下面倒着输出
for (int i = C.size() - 1; i >= 0; i -- ) printf("%d", C[i]); return0; }
int t = 0; for (int i = 0; i < A.size(); i ++ ) { t = A[i] - t; // 先处理借位情况 if (i < B.size()) t -= B[i]; // B还没减完时 C.push_back((t + 10) % 10); // 防止t小于0 if (t < 0) t = 1; // 说明不够减要借位 else t = 0; // 无需借位 }