#305. Sequence Construction

0

Sequence Construction

Sequence Construction

题目描述

最近,农夫约翰农场里的奶牛们迷上了观看节目 Apothecowry Dairies。节目围绕着聪明的牛侦探 CowCow 解决各种各样的问题展开。Bessie 从节目中发现了一个新问题,但答案要等到一周后的下一集才会揭晓!请你替她解决这个问题。\n\n给定整数 MM 和 KK (1≤M≤109,1≤K≤31)(1 \leq M \leq 10 ^ 9, 1 \leq K \leq 31)。\n请你选择一个正整数 NN,并构造一个由 NN 个非负整数组成的序列 aa,使得满足以下条件:\n1≤N≤1001 \le N \le 100\na1+a2+⋯+aN=Ma_1 + a_2 + \dots + a_N = M\n$\text{popcount}(a_1) \oplus \text{ popcount}(a_2) \oplus \dots \oplus \text{ popcount}(a_N) = K$\n\n如果不存在这样的序列,输出 −1-1。\n\n† popcount(x)\dagger \text{ popcount}(x) 表示整数 xx 的二进制表示中等于 11 的比特数。例如,1111 的 popcount 是 33,1616 的 popcount 是 11。\n\n†⊕\dagger \oplus 表示按位异或运算符。\n\n输入包含 TT 个 (1≤T≤5⋅103)(1 \le T \le 5 \cdot 10^3) 相互独立的测试用例。

输入格式

第一行包含 TT。\n每个测试用例仅一行,包含 MM 和 KK。\n保证所有测试用例互不相同。

输出格式

按如下格式输出 TT 个测试用例的答案:\n如果不存在答案,则该测试用例只输出一行 −1-1。\n否则,该测试用例第一行输出一个整数 NN,表示序列长度 -- (1≤N≤1001 \le N \le 100)。\n第二行输出 NN 个用空格分隔的整数,满足题目条件 -- (0≤ai≤M0 \le a_i \le M)。

3\n2 1\n33 5\n10 5
2\n2 0\n3\n3 23 7 \n-1

提示

在第一个测试用例中,数组 a=[2,0]a = [2, 0] 的元素和为 22。popcount 的异或和为 1⊕0=11 \oplus 0 = 1。因此满足所有条件。\n\n在第二个测试用例中,数组 a=[3,23,7]a = [3, 23, 7] 的元素和为 3333。popcount 的异或和为 2⊕4⊕3=52 \oplus 4 \oplus 3 = 5。因此满足所有条件。\n其他合法的数组还有 a=[4,2,15,5,7]a = [4, 2, 15, 5, 7] 和 a=[1,4,0,27,1]a = [1, 4, 0, 27, 1]。\n可以证明第三个测试用例不存在合法数组。\n\nSCORING:\nInput 2: M≤8,K≤8M \leq 8, K \leq 8\nInputs 3-5: M>2KM > 2^K\nInputs 6-18: 无额外限制。\n\n题目来源:Aakash Gokhale

标签: USACO|2025|Silver

来源

USACO|2025|Silver