比赛 2025.9.6 评测结果 AAAAAAAAAAAAAAAAAA
题目名称 Sequence Construction 最终得分 100
用户昵称 OTTF 运行时间 0.492 s
代码语言 C++ 内存使用 3.69 MiB
提交时间 2025-09-06 10:58:14
显示代码纯文本

#include <cstdio>
#include <iostream>
#include <vector>

using namespace std;

int t;
int m;
int k;
vector<int> vec;

int main () {
	
	freopen ("Sequence.in", "r", stdin);
	freopen ("Sequence.out", "w", stdout);

	cin >> t;
	for (int i = 1; i <= t; i++) {
		cin >> m >> k;
		vec.clear();
		for (int j = 1; j <= k; j <<= 1) {
			if (j & k) {
				vec.push_back((1 << j) - 1);
				m -= (1 << j) - 1;
			}
		}
		if (m < 0) {
			cout << -1 << endl;
			continue;
		}
		else if (m == 1) {
			if (*vec.begin() == 1) {
				*vec.begin() = 2;
				m = 0;
			}
			else {
				cout << -1 << endl;
				continue;
			}
		}
		else if (m % 2) {
			vec.push_back(1);
			vec.push_back(2);
			m -= 3;
		}

		if (m) {
			vec.push_back(m / 2);
			vec.push_back(m / 2);
		}

		cout << vec.size() << endl;
		for (auto num : vec) {
			cout << num << ' ';
		}
		cout << endl;
	}
	
	return 0;
}