1
作者:
梦若浮生
,
2023-02-04 16:14:48
,
所有人可见
,
阅读 183
#include<bits/stdc++.h>
using namespace std;
long long n,k,m;
int T;
int cnt=0;
bool check(){
cnt=0;
while(m){
cnt++;
m/=2;
}
return k>=(1<<cnt);
}
long long lowbit(long long x){
return x&-x;
}
int main(){
cin>>T;
while(T--){
cin>>n>>k>>m;
long long p=m;
if(check()){
puts("-1");
continue;
}
if(k==0){
for(int i=1;i<=n;i++) cout<<0<<" ";
continue;
}
if(k<=p){
if(n%2==0){
for(int i=1;i<=n-1;i++) cout<<0<<" ";
cout<<k<<endl;
}
else {
for(int i=1;i<=n-1;i++) cout<<0<<" ";
cout<<k<<endl;
}
}
else{
if(n%2==0){
for(int i=1;i<=n-2;i++) cout<<0<<" ";
cout<<(1ll<<cnt-1)<<" "<<k-(1ll<<cnt-1)<<endl;
}
else{
for(int i=1;i<=n-3;i++) cout<<0<<" ";
long long q=k-(1<<cnt-1);
cout<<(1ll<<cnt-1)<<" "<<q-lowbit(q)<<" "<<lowbit(q)<<endl;
}
}
}
}
卧槽,6
比赛还没结束吧
这又不能过,会卡1个点