// 实现两个大整数的加法函数 vector<int> add(vector<int> a, vector<int> b){ if (a.size() < b.size()) returnadd(b, a); // 确保 a 的长度大于或等于 b
vector<int> c; // 存储结果的向量 int t = 0; // 进位
// 遍历较长的向量 a for (int i = 0; i < a.size(); ++i) { t += a[i]; // 累加 a 的当前位 if (i < b.size()) t += b[i]; // 如果 b 还有对应的位,则累加 b 的当前位 c.push_back(t % 10); // 将当前位的结果存入 c t /= 10; // 更新进位 }
// 如果有剩余的进位,则加入结果 if (t) c.push_back(t);
return c; }
intmain(){ // 读取两个大整数的字符串 cin >> s1 >> s2;
// 将字符串转换为向量,低位在前 for (int i = s1.size() - 1; i >= 0; --i) a.push_back(s1[i] - '0'); for (int i = s2.size() - 1; i >= 0; --i) b.push_back(s2[i] - '0'); //在C++中,字符(char)和整数(int)之间有一定的对应关系。具体来说,字符 '0' 到 '9' 的ASCII值分别是48到57。为了将字符 '0' 到 '9' 转换为对应的整数0到9,需要减去字符 '0' 的ASCII值。这是因为字符 '0' 的ASCII值是48,所以减去48就得到了对应的整数值。
// 计算两个向量的和 auto ans = add(a, b);
// 逆序输出结果 for (int i = ans.size() - 1; i >= 0; --i) printf("%d", ans[i]);