记录编号 605711 评测结果 AAAAAAAAAAAAAAAAAA
题目名称 4170.[USACO25 Open Silver]Sequence Construction 最终得分 100
用户昵称 Gravatar左清源 是否通过 通过
代码语言 C++ 运行时间 0.169 s
提交时间 2025-09-06 16:27:24 内存使用 3.86 MiB
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
int m,k;
vector<int>ans; 
int main(){
	freopen("Sequence.in","r",stdin);
	freopen("Sequence.out","w",stdout);
	int T;
	scanf("%d",&T);
	while(T--){
		scanf("%d %d",&m,&k);
		for(int i=0;i<=5;i++){
			if((k>>i)&1){
				m-=(1<<(1<<i))-1;
				ans.push_back((1<<(1<<i))-1);
			}
		}
		if(m<0){
			printf("-1");
		}else if(m==0){
			printf("%d\n",ans.size());
			for(auto v:ans)printf("%d ",v);
		}else if(m==1){
			bool f=0;
			for(int i=0;i<ans.size();i++){
				if(ans[i]==1){
					ans[i]=2,f=1;
					break;
				}
			}
			if(!f)printf("-1");
			else{
				printf("%d\n",ans.size());
				for(auto v:ans)printf("%d ",v);
			}
		}else if(!(m&1)){
			ans.push_back(m>>1);
			ans.push_back(m>>1);
			printf("%d\n",ans.size());
			for(auto v:ans)printf("%d ",v);
		}else{
			ans.push_back(1);
			ans.push_back(2);
			m-=3;
			ans.push_back(m>>1);
			ans.push_back(m>>1);
			printf("%d\n",ans.size());
			for(auto v:ans)printf("%d ",v);
		}
		printf("\n");
		ans.clear();
	}
	return 0;
}