311282: CF1965B. Missing Subsequence Sum

Memory Limit:256 MB Time Limit:2 S
Judge Style:Text Compare Creator:
Submit:0 Solved:0

Description

B. Missing Subsequence Sumtime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard output

You are given two integers $n$ and $k$. Find a sequence $a$ of non-negative integers of size at most $25$ such that the following conditions hold.

  • There is no subsequence of $a$ with a sum of $k$.
  • For all $1 \le v \le n$ where $v \ne k$, there is a subsequence of $a$ with a sum of $v$.

A sequence $b$ is a subsequence of $a$ if $b$ can be obtained from $a$ by the deletion of several (possibly, zero or all) elements, without changing the order of the remaining elements. For example, $[5, 2, 3]$ is a subsequence of $[1, 5, 7, 8, 2, 4, 3]$.

It can be shown that under the given constraints, a solution always exists.

Input

The first line of the input contains a single integer $t$ ($1 \le t \le 1000$) — the number of test cases. The description of the test cases follows.

Each test case consists of a single line containing two integers $n$ and $k$ ($2 \le n \le 10^6$, $1 \le k \le n$) — the parameters described above.

It is guaranteed that the sum of $n$ over all test cases does not exceed $10^7$.

Output

The first line of output for each test case should contain a single integer $m$ ($1 \le m \le 25$) — the size of your chosen sequence.

The second line of output for each test case should contain $m$ integers $a_i$ ($0 \le a_i \le 10^9$) — the elements of your chosen sequence.

If there are multiple solutions, print any.

ExampleInput
5
2 2
6 1
8 8
9 3
10 7
Output
1
1
5
2 3 4 5 6
7
1 1 1 1 1 1 1
4
7 1 4 1
4
1 2 8 3
Note

In the first example, we just need a subsequence that adds up to $1$, but not one that adds up to $2$. So the array $a=[1]$ suffices.

In the second example, all elements are greater than $k=1$, so no subsequence adds up to $1$. Every other integer between $1$ and $n$ is present in the array, so there is a subsequence of size $1$ adding up to each of those numbers.

Output

题目大意:
给定两个整数n和k,找到一个非负整数序列a,其长度不超过25,并满足以下条件:
1. a中没有和为k的子序列。
2. 对于所有1≤v≤n且v≠k,a中存在和为v的子序列。

一个序列b是序列a的子序列,如果b可以通过删除a中的几个(可能为零或全部)元素而不改变剩余元素的顺序来获得。例如,[5, 2, 3]是[1, 5, 7, 8, 2, 4, 3]的子序列。

根据给定的约束,可以证明解决方案总是存在的。

输入输出数据格式:
输入:
第一行包含一个整数t(1≤t≤1000)——测试用例的数量。接下来是t个测试用例的描述。
每个测试用例包含一行,有两个整数n和k(2≤n≤10^6,1≤k≤n)——上述参数。
保证所有测试用例的n之和不超过10^7。

输出:
对于每个测试用例,第一行应包含一个整数m(1≤m≤25)——所选序列的长度。
第二行应包含m个整数a_i(0≤a_i≤10^9)——所选序列的元素。
如果有多个解决方案,输出其中任何一个。

示例:
输入:
```
5
2 2
6 1
8 8
9 3
10 7
```
输出:
```
1
1
5
2 3 4 5 6
7
1 1 1 1 1 1 1
4
7 1 4 1
4
1 2 8 3
```
注意:
在第一个例子中,我们只需要一个和为1的子序列,而不需要和为2的子序列。所以数组a=[1]就足够了。
在第二个例子中,所有元素都大于k=1,所以没有子序列的和为1。每个大于1且小于n的整数都在数组中,所以存在一个大小为1的子序列,其和为这些数中的每一个。题目大意: 给定两个整数n和k,找到一个非负整数序列a,其长度不超过25,并满足以下条件: 1. a中没有和为k的子序列。 2. 对于所有1≤v≤n且v≠k,a中存在和为v的子序列。 一个序列b是序列a的子序列,如果b可以通过删除a中的几个(可能为零或全部)元素而不改变剩余元素的顺序来获得。例如,[5, 2, 3]是[1, 5, 7, 8, 2, 4, 3]的子序列。 根据给定的约束,可以证明解决方案总是存在的。 输入输出数据格式: 输入: 第一行包含一个整数t(1≤t≤1000)——测试用例的数量。接下来是t个测试用例的描述。 每个测试用例包含一行,有两个整数n和k(2≤n≤10^6,1≤k≤n)——上述参数。 保证所有测试用例的n之和不超过10^7。 输出: 对于每个测试用例,第一行应包含一个整数m(1≤m≤25)——所选序列的长度。 第二行应包含m个整数a_i(0≤a_i≤10^9)——所选序列的元素。 如果有多个解决方案,输出其中任何一个。 示例: 输入: ``` 5 2 2 6 1 8 8 9 3 10 7 ``` 输出: ``` 1 1 5 2 3 4 5 6 7 1 1 1 1 1 1 1 4 7 1 4 1 4 1 2 8 3 ``` 注意: 在第一个例子中,我们只需要一个和为1的子序列,而不需要和为2的子序列。所以数组a=[1]就足够了。 在第二个例子中,所有元素都大于k=1,所以没有子序列的和为1。每个大于1且小于n的整数都在数组中,所以存在一个大小为1的子序列,其和为这些数中的每一个。

加入题单

上一题 下一题 算法标签: