首先奇数肯定不行
构造如果都是1 一个1的价值为2 肯定是不够的
考虑尽可能构造0
如果是 10 那次数分别是 4 2 倒一下就是 2 4
如果是 100 那次数分别是 8 4 2 倒一下就是 2 4 8
所以尽可能接尽可能多的0 模拟一下就好
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll K;
void solve(){
vector<int> res;
if(K % 2 != 0){
cout << -1 << endl;
return;
}
while(K > 0){
ll now = 2;
res.push_back(1);
while(K >= 2*now+2){ //不断的补0
res.push_back(0);
now = 2*now + 2;
}
K -= now;
}
cout << res.size() << endl;
for(int i = 0;i < res.size();i += 1){
cout << res[i];
if(i + 1 != res.size()){
cout << " ";
}else{
cout << endl;
}
}
}
int main(void){
int T;
cin >> T;
while(T--){
cin >> K;
solve();
}
return 0;
}