专栏文章

题解:P1601 A+B Problem(高精)

P1601题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@miounh0c
此快照首次捕获于
2025/12/03 01:26
3 个月前
此快照最后确认于
2025/12/03 01:26
3 个月前
查看原文
基础高精度,无聊死了
众所周知高精度不是什么容易的事,但是让我一看 1050010^{500} 次方,惊讶/好笑,小学竖式就完事了。
总体就是定义两个 字符串 ,再把每一位改成数组比如ai,bia_i , b_i,最后加一起在做进位,最后到过来输出。
高精度。顾名思义,就是在很大的位数情况下进行运算。其基本思想就是用数组进行模拟加法及进位。最后遍历数组输出。
(int,long long,double,long double炸!!!)
代码如下
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 条评论,欢迎与作者交流。

正在加载评论...