专栏文章
题解:P1601 A+B Problem(高精)
P1601题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miounh0c
- 此快照首次捕获于
- 2025/12/03 01:26 3 个月前
- 此快照最后确认于
- 2025/12/03 01:26 3 个月前
基础高精度,无聊死了。
众所周知高精度不是什么容易的事,但是让我一看 次方,惊讶/好笑,小学竖式就完事了。
总体就是定义两个 字符串 ,再把每一位改成数组比如,最后加一起在做进位,最后到过来输出。
高精度。顾名思义,就是在很大的位数情况下进行运算。其基本思想就是用数组进行模拟加法及进位。最后遍历数组输出。
代码如下
CPP#include<bits/stdc++.h>
using namespace std;
int a[505], b[505], c[505]; //定义
string a1, b1; //定义
int main() {
cin >> a1;
reverse(a1.begin(), a1.end()); //转
for (int i = 0; i < a1.size(); i++) {
a[i] = a1[i] - 48; //string转数组
}
cin >> b1;
reverse(b1.begin(), b1.end());
for (int i = 0; i < b1.size(); i++) {
b[i] = b1[i] - 48; //string转数组
}
int len = max(b1.size(), a1.size()); //定义长度
for (int i = 0; i < len; i++) {
c[i] += a[i] + b[i]; //
c[i + 1] += c[i] / 10; //在下一位进位
c[i] %= 10; //缩小到个位
}
if (c[len]) {
len++;//如果前面需要有再加上的数
}
for (int i = len - 1; i >= 0; i--) {
cout << c[i]; //输出
}
return 0;
//完结撒花
}
题解仅供学习参考使用
抄袭、复制题解,以达到刷 AC 率/AC 数量或其他目的的行为,在洛谷是严格禁止的。
洛谷非常重视学术诚信。此类行为将会导致您成为作弊者。 具体细则请查看洛谷社区规则。
提交题解前请务必阅读《洛谷主题库题解规范》。
洛谷万岁!!
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...