80分求助
查看原帖
80分求助
387146
非晶体楼主2023/3/31 22:05

代码如下

#include <bits/stdc++.h>
using namespace std;
#define N 100000005
long long l[N];

int biao[15] = {0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001, 0, 0, 0, 0};

int main() {
	long long T, a;
	long long n, d, m = 1;
	cin >> T;
	for (long long i = 1; i <= T; i++) {
		long long sum = 0;
		cin >> n;
		for (long long j = 1; j <= n; j++) {
			cin >> a;
			if (a == 1) {
				if (sum == 0)
					continue;
				sum += sum;
				m++;
			}
			if (a == 2) {
				cin >> d;
				sum += d;
				l[m] += d;
			}
		}
		if (sum == 0 ) {
			cout << sum << endl;
			continue;
		}
		if (m == 1 && l[1] < 10 ) {
			for (long long j = 1; j <= 9; j++) {
				if (l[1] == j)
					cout << biao[j];
			}
			continue;
		}
		for (long long j = 1; j <= m / 2; j++) {
			long long num1;
			num1 = l[j];
			l[j] = l[m + 1 - j];
			l[m + 1 - j] = num1;
		}
		long long num = 1;
		while (--m) {

			l[num + 1] += l[num] / 2;
			l[num] = l[num] % 2;
			num++;
			if (l[num] > 1 && m == 1)
				m++;
		}
		for (int j = num; j >= 1; j--)

		{
			cout << l[j] ;
			l[j] = 0;
		}
		m = 1;
		cout << endl;
		sum = 0;
	}

	return 0;
}
2023/3/31 22:05
加载中...