为什么高精度一直有问题啊
  • 板块P1255 数楼梯
  • 楼主Archy_
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/8/20 18:02
  • 上次更新2024/8/20 20:37:21
查看原帖
为什么高精度一直有问题啊
895312
Archy_楼主2024/8/20 18:02
#include<iostream>
using namespace std;
struct node {
	int a[100005], len = 0;
	node(int x = 0){
		while(x > 0){
			a[++ len] = x % 10;
			x /= 10;
		}
	}
	void print() {
		for(int i = len; i >= 1; i--) {
			cout << a[i];
		}
	}
};

node operator + (const node x, const node y){
	node z(0);
	z.len = max(x.len, y.len) + 2;
	for(int i = 1;i <= z.len; i ++) {
		z.a[i] += (x.a[i] + y.a[i]);
		if(z.a[i] > 9) {
			z.a[i + 1] += (z.a[i] / 10);
			z.a[i] %= 10;
		}
	}
	while(z.a[z.len] == 0) z.len--;
	return z;
} 

int main(){
	node a(1), b(2);
	a = a + b;
	a.print();
	a = a + a;
	a.print();
	return 0;
}

main 函数第一次输出 3,第一次加法没问题,第二次输出了8,就不对了。每次都是第二次加法都不对了。

2024/8/20 18:02
加载中...