比赛 2025.9.6 评测结果 AAAAAAAAAAAAAAAAAA
题目名称 Sequence Construction 最终得分 100
用户昵称 彭欣越 运行时间 0.462 s
代码语言 C++ 内存使用 3.72 MiB
提交时间 2025-09-06 10:44:05
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=100010;
int T,m,k,p[N];
vector<int>v;
ll qpow (int m,int k) {
    ll res=1;
    while (k) {
    	if (k&1) {
    		res*=m;
		}
		m*=m;
		k/=2;
	}
	return res;
}
int main () {
	freopen("Sequence.in","r",stdin);
	freopen("Sequence.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
	//cout << qpow(2,5) <<endl;
	cin >> T;
	while (T--) {
		v.clear();
		cin >> m >> k;
		int t=k;
		for (int i=qpow(2,4),j=6;i>=1;i/=2) {
			//cout << i <<endl;
	        if (t>=i) {
	        	t-=i;
	        	p[j]=1;
	        	ll sum=qpow(2,i)-1;
	        	v.push_back(sum);
	        	m-=sum;
	        	//cout << m <<' '<< sum <<endl;
			}
			j--;
		}
	    if (m<0) {
	    	cout << -1 <<endl;
	    	continue;
		}
		if (m==1) {
	        //cout << "qwq" <<endl;
			if (v[v.size()-1]==1) v[v.size()-1]=2;
			else {
				cout << -1 <<endl;
				continue;
			}
		}
		if (m%2==0&&m!=0) {
			v.push_back(m/2);
			v.push_back(m/2);
		}
		if (m%2==1&&m!=1) {
			v.push_back(1);
			v.push_back(2);
			m-=3;
			if (m!=0) {
				v.push_back(m/2);
				v.push_back(m/2);
			}
		}
		cout << v.size() <<endl;
		for (int i=0;i<v.size();i++) cout << v[i] <<' ';
		cout <<endl;
	}
	return 0;
}