P1601 A+B Problem(高精)

// Problem: P1601 A+B Problem(高精)
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/P1601
// Memory Limit: 125 MB
// Time Limit: 1000 ms
// User: Pannnn
#include <bits/stdc++.h>
using namespace std;
vector<int> sum(vector<int> a, vector<int> b) {
vector<int> res;
// 标记进位
int p = 0;
for (int i = 0; i < a.size() || i < b.size(); ++i) {
if (i < a.size()) {
p += a[i];
}
if (i < b.size()) {
p += b[i];
}
res.push_back(p % 10);
p /= 10;
}
// 如果最后进位值不是0,再进1位
if (p) {
res.push_back(p);
}
return res;
}
// 将字符串反转并将字符对应数值存到vector中
vector<int> reverse(string num) {
vector<int> res;
for (int i = num.length() - 1; i >= 0; --i) {
res.push_back(num[i] - '0');
}
return res;
}
int main() {
string a, b;
cin >> a >> b;
/*
由于数值很大,以字符串格式读入后进行处理
模拟加法运算,从最后一位往前依次相加,用一个变量保存进位
由于最后可能会有进位,如果数值正向存储可能需要整体移动
所以将数值进行逆序,如果有进位仅需在最后添加,最后倒序输出
*/
vector<int> num1 = reverse(a);
vector<int> num2 = reverse(b);
vector<int> res = sum(num1, num2);
for (int i = res.size() - 1; i >= 0; --i) {
cout << res[i];
}
cout << endl;
return 0;
}
posted @   Pannnn  阅读(32)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
-->
点击右上角即可分享
微信分享提示