比赛 |
2025.9.6 |
评测结果 |
AAAAAAAAAAAAAAAAAA |
题目名称 |
Sequence Construction |
最终得分 |
100 |
用户昵称 |
彭欣越 |
运行时间 |
0.462 s |
代码语言 |
C++ |
内存使用 |
3.72 MiB |
提交时间 |
2025-09-06 10:44:05 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=100010;
int T,m,k,p[N];
vector<int>v;
ll qpow (int m,int k) {
ll res=1;
while (k) {
if (k&1) {
res*=m;
}
m*=m;
k/=2;
}
return res;
}
int main () {
freopen("Sequence.in","r",stdin);
freopen("Sequence.out","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
//cout << qpow(2,5) <<endl;
cin >> T;
while (T--) {
v.clear();
cin >> m >> k;
int t=k;
for (int i=qpow(2,4),j=6;i>=1;i/=2) {
//cout << i <<endl;
if (t>=i) {
t-=i;
p[j]=1;
ll sum=qpow(2,i)-1;
v.push_back(sum);
m-=sum;
//cout << m <<' '<< sum <<endl;
}
j--;
}
if (m<0) {
cout << -1 <<endl;
continue;
}
if (m==1) {
//cout << "qwq" <<endl;
if (v[v.size()-1]==1) v[v.size()-1]=2;
else {
cout << -1 <<endl;
continue;
}
}
if (m%2==0&&m!=0) {
v.push_back(m/2);
v.push_back(m/2);
}
if (m%2==1&&m!=1) {
v.push_back(1);
v.push_back(2);
m-=3;
if (m!=0) {
v.push_back(m/2);
v.push_back(m/2);
}
}
cout << v.size() <<endl;
for (int i=0;i<v.size();i++) cout << v[i] <<' ';
cout <<endl;
}
return 0;
}