这个高精度加法为什么是一次性的
  • 板块灌水区
  • 楼主Archy_
  • 当前回复5
  • 已保存回复5
  • 发布时间2024/8/20 18:07
  • 上次更新2024/8/20 20:41:22
查看原帖
这个高精度加法为什么是一次性的
895312
Archy_楼主2024/8/20 18:07
#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;
}

第一次输出了 3,第二次输出了 8. 只要涉及了两次加法都错了,请问哪里错了

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