求调
  • 板块学术版
  • 楼主King_and_Grey
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/6/24 12:00
  • 上次更新2024/6/24 16:33:07
查看原帖
求调
1058749
King_and_Grey楼主2024/6/24 12:00

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 5;
struct Bigint {
	int len, a[maxn];
	Bigint(int x = 0) {
		memset(a, 0, sizeof(a));
		for (len = 1; x; len++)
			a[len] = x % 10, x /= 10;
		len--;
	}
	int &operator[](int i) {
		return a[i];
	}
	void flatten(int L) {
		len = L;
		for (int i = 1; i <= len; i++)
			a[i + 1] += a[i] / 10, a[i] %= 10;
		for (; !a[len]; )
			len--;
	}
	void print() {
		for (int i = max(len, 1); i >= 1; i--)
			printf("%d", a[i]);
	}
};
Bigint operator+(Bigint a, Bigint b) {
	Bigint c;
	int len = max(a.len, b.len);
	for (int i = 1; i <= len; i++)
		c[i] += a[i] + b[i];
	c.flatten(len + 1);
	return c;
}
Bigint operator*(Bigint a, Bigint b) {
	Bigint c;
	for(int i = 1;i <= a.len;i++){
		for(int j = 1;j <= b.len;j++){
		   c[i + j - 1] += a[i] * b[i];
		}
	}
	c.flatten(a.len + b.len);
	return c;
}


signed main(){
	Bigint a,b,c;
	a = Bigint(2212);
	b = Bigint(22332);
	c = a * b;
	c.print();a
}

我自己重新打了一个高进度乘高进度,结果报错了。

玄关QwQ

2024/6/24 12:00
加载中...