25分求条
查看原帖
25分求条
1005260
Andy1818楼主2025/7/1 22:45

Only AC on #1 3 4 5 16

#include<bits/stdc++.h>
using namespace std;
vector<long long> v[5003];
int main()
{
 	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	long long t;
	cin>>t;
	while(t--){
		long long n,k,M=0;
		cin>>n>>k;
		if(k==1){
			cout<<3<<endl;
			if(n%2){
				cout<<1<<" "<<n/2<<" "<<n/2<<endl;
			}
			else{
				cout<<2<<" "<<n/2-1<<" "<<n/2-1<<endl;
			}
			continue;
		}
		for(long long i=30;i>=0;i--){
			if(k>=(1<<i)){
				v[t].push_back((1<<(1<<i))-1);
				k-=(1<<i);
				M+=(1<<(1<<i))-1;
			}
		}
		M=n-M;
		if(M==1 or M<0){
			cout<<-1<<endl;
			continue;
		}
		if(M%2){
			v[t].push_back(1);
			v[t].push_back(2);
			v[t].push_back((M-3)/2);
			v[t].push_back((M-3)/2);
		}
		else{
			v[t].push_back(M/2);
			v[t].push_back(M/2);
		}
		cout<<v[t].size()<<endl;
		for(long long i=0;i<v[t].size();i++){
			cout<<v[t][i]<<" ";
		}
		cout<<endl;
	}
	return 0;
}
2025/7/1 22:45
加载中...