比赛 2025.9.6 评测结果 AWWWWWWWWWWWWWWWWW
题目名称 Sequence Construction 最终得分 6
用户昵称 梧叶已同秋雨去 运行时间 0.352 s
代码语言 C++ 内存使用 3.69 MiB
提交时间 2025-09-06 10:11:04
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int m,k,t,a[35],ans[105],e[105],cnt,m2; 
void yu(){
	e[0]=1;
	for(int i=1;i<=31;i++){
		e[i]=e[i-1]*2;
	}
}
void work(int kk){
	int f=0;yu();
	while(kk){
		f++;
		a[f]=kk%2;
		kk/=2;
	}
	for(int i=1;i<=f;i++){
		if(a[i]==1){
			cnt++;
			ans[cnt]=e[e[f-i]]-1;
//			cout<<"a[f]:"<<a[f]<<endl;
//			cout<<"ans:"<<f-i<<" "<<ans[cnt]<<"\n";
		}
	}
}
int main(){
	freopen("Sequence.in","r",stdin);
	freopen("Sequence.out","w",stdout);
	cin>>t;
	while(t--){
		cin>>m>>k;cnt=0;
		work(k);m2=m;
		for(int i=1;i<=cnt;i++){
			m2-=ans[i];
		}
		if(m2<0){
			cout<<-1<<"\n";continue;
		}
		if(m2==0){
			cout<<cnt<<"\n";
			for(int i=1;i<=cnt;i++){
				cout<<ans[i]<<" ";
			}cout<<"\n";continue;
		}
		if(m2==1){bool pp=0;
			for(int i=1;i<=cnt;i++){
				if(ans[i]==1){
					ans[i]=2;
					pp=1;
				}
			}
			if(pp==0){
				cout<<-1<<"\n";continue;
			}else{cout<<cnt<<"\n";
				for(int i=1;i<=cnt;i++){
					cout<<ans[i]<<" ";
				}cout<<"\n";continue;
			}
		}
		if(m2%2==0){
			cout<<cnt+2<<"\n";
			for(int i=1;i<=cnt;i++){
				cout<<ans[i]<<" ";
			}cout<<(m2/2)<<" "<<(m2/2)<<"\n";continue;
		}
		if(m%2==1){
			cout<<cnt+4<<"\n";
			for(int i=1;i<=cnt;i++){
				cout<<ans[i]<<" ";
			}
			cout<<1<<" "<<2<<" ";
			m2-=3;
			cout<<(m2/2)<<" "<<(m2/2)<<"\n";continue;
		}
	}
	return 0;
}