40分求助
查看原帖
40分求助
736746
bananamilktea楼主2024/12/16 18:18

rt,悬关

#include<bits/stdc++.h>

using namespace std;

const int MAXN = 20001;

int n, a[MAXN], b[MAXN], c[MAXN], d[MAXN], x[MAXN];
char op;
void read(int a[]) {
	string s;
	cin >> s;
	fill(a + 1, a + MAXN + 1, 0);
	for(int i = 0; i < s.size(); i++) {
		a[i] = s[i] - '0';
	}
	reverse(a, a + s.size());
}
void print(int a[]) {
	int i;
	for(i = MAXN; i >= 1; i--) {
		if(a[i] != 0) {
			break;
		}
	}
	for(; i >= 0; i--) {
		cout << a[i] << " ";
	}
}
void add(int a[], int b[], int c[]) {
	fill(c + 1, c + MAXN + 1, 0);
	for(int i = 0; i < n; i++) {
		c[i] += a[i] + b[i];
		if(c[i] >= x[i]) {
			c[i + 1] += c[i] / x[i];
			c[i] %= x[i];
		}
	}
}
void sub(int a[], int b[], int c[]) {
	fill(c + 1, c + MAXN + 1, 0);
	for(int i = 0; i < n; i++) {
		c[i] += a[i] - b[i];
		if(c[i] < 0) {
			c[i + 1] -= abs(c[i]) / x[i] + !!(abs(c[i]) % x[i]);
			c[i] += (abs(c[i]) / x[i] + !!(abs(c[i]) % x[i])) * x[i];
		}
	}
}
bool check(int a[], int b[], int low, int len) {
	if(a[len + low] != 0) {
		return true;
	}
	for(int i = len - 1; i >= 0; i--) {
		if(a[i + low] > b[i]) {
			return true;
		}
		else if(a[i + low] < b[i]) {
			return false;
		}
	}
	return true;
}
void div(int a[], int b[], int c[], int d[]) {
	fill(c + 1, c + MAXN + 1, 0);
	fill(d + 1, d + MAXN + 1, 0);
	int lena = MAXN - 1, lenb = MAXN - 1;
	for(; lena > 0; lena--) {
		if(a[lena - 1] != 0) {
			break;
		}
	}
	for(; lenb > 0; lenb--) {
		if(b[lenb - 1] != 0) {
			break;
		}
	}
	for(int i = 0; i < lena; i++) {
		d[i] = a[i];
	}
	for(int i = lena - lenb; i >= 0; i--) {
		while(check(d, b, i, lenb)) {
			for(int j = 0; j < lenb; j++) {
				d[i + j] -= b[j];
				if(d[i + j] < 0) {
					d[i + j] += 10;
					d[i + j + 1]--;
				}
			}
			c[i]++;
		}
	}
}

int main() {
	cin >> n;
	for(int i = 0; i < n; i++) {
		cin >> x[i];
	}
	for(int i = 0; i < n; i++) {
		cin >> a[i];
	}
	cin >> op;
	for(int i = 0; i < n; i++) {
		cin >> b[i];
	}
	reverse(x, x + n);
	reverse(a, a + n);
	reverse(b, b + n);
	if(op == '+') {
		add(a, b, c);
		print(c);
	}
	else {
		sub(a, b, c);
		print(c);
	}
	return 0;
} 
2024/12/16 18:18
加载中...