#HK3729. 「SNOI2022」倍增

「SNOI2022」倍增

题目描述

小 Z 是一个喜欢编程的女孩子。

这天,她在做一道编程题的时候偶然发现了一个神奇的整数 142857142857。

142857×2=285714142857 \times 2 = 285714,而 285714285714 的所有数位恰好是 142857142857 的一个排列。

她很好奇,有没有更大的满足这种性质的整数。

她写了一个搜索,发现了一些更大的有趣的数:

26835741×2=5367148226835741 \times 2 = 53671482

0987312654×2=19746253080987312654 \times 2 = 1974625308

…\dots

她不满足于解决十进制下这样的问题,于是她想知道,是否在 BB 进制下存在一个 nn 位正整数 xx,满足 2x2x 的所有数位在 BB 进制下是 nn 的所有数位的一个排列。

由于她讨厌数字 00,因此她还要求对于任意 1≤i≤n1 \leq i \leq n,xx 和 2x2x 在 BB 进制下的第 ii 位不能同时为 00。

输入格式

输入包含多组数据。

输入的第一行是一个正整数 TT,表示数据组数。

接下来 TT 行,第 ii 行包含两个正整数 nn 和 BB,表示第 ii 组数据。

输出格式

对于每组数据,输出一行。

若本组数据有解,按照从高位到低位的顺序输出 nn 个非负整数,表示你找到的答案在 BB 进制下的值。

否则只需要输出一个数 −1-1。

3
6 10
3 3
6 7

1 4 2 8 5 7
-1
0 3 5 3 1 6

第一组数据的解释参见「题目描述」。

对于第二组数据,可以通过枚举所有的 nn 位 BB 进制数说明一定不能找到这样的正整数。

对于第三组数据,2x2x 的 77 进制表示为 103635(7)103635_{(7)},因此这是一个满足题意的答案。

注意此样例的答案文件仅表明了一种可能的合法答案,不表明答案文件恰好对应标准程序的输出。

样例 2

见附加文件中 [double2.in](file:double2.in) 和 [double2.ans](file:double2.ans)。

本组数据满足测试点 3 的限制。

注意此样例的答案文件仅表明了一种可能的合法答案,不表明答案文件恰好对应标准程序的输出。

样例 3

见附加文件中 [double3.in](file:double3.in) 和 [double3.ans](file:double3.ans)。

本组数据满足测试点 17 的限制。

注意此样例的答案文件仅表明了一种可能的合法答案,不表明答案文件恰好对应标准程序的输出。

提示

由于答案可能不唯一,我们下发了校验器 [checker.cpp](file:checker.cpp) 和库文件 [testlib.h](file:testlib.h)。

可以使用以下命令编译 checker.cpp:

g++ -o checker checker.cpp -O2 -std=c++11

将 checker.cpp 编译得到可执行文件 checker 后你可以使用以下方式测试你的答案:

checker <input> <output> <answer>:利用选手目录下的 double*.ans 可以用来检验你的答案在样例测试点 double*.in 的正确性。

checker <input> <output> <output>:会检查你对这组数据的所有有解输出是否符合题目要求。注意以此种方式测试的时候,输出无解总会被报告为合法。

请选手注意多组数据之间的清空问题。

数据范围与提示

对于全部数据,1≤T≤1041 \le T \le 10^4,2≤∑B≤2×1052 \le \sum B \le 2 \times 10^5,1≤∑n≤2×1051 \le \sum n \le 2 \times 10^5,n≥1n \ge 1,B≥2B \ge 2。

具体的数据规模与约定见下表。

测试点编号 nn BB TT 特殊约定
11 ≤8\le 8 ≤8\le 8 ≤10\le 10 无
22 ≤104\le 10^4
33 ≤2×105\le 2\times 10^5 ≤10\le 10
44 ≤104\le 10^4
55
66 ≤15\le 15 ≤15\le 15 ≤100\le 100
77 ≤40\le 40 ≤40\le 40
88 ≤100\le 100 ≤100\le 100
99 ≤300\le 300 ≤300\le 300
1010 ≤1000\le 1000 ≤1000\le 1000
1111 ≤3000\le 3000 ≤3000\le 3000
1212 ≤15000\le 15000 ≤15000\le 15000
1313 ≤50000\le 50000 ≤50000\le 50000
1414 ≤2×105\le 2\times 10^5 ≤2×105\le 2\times 10^5
1515 ≤200\le 200 ≤200\le 200 ≤104\le 10^4 n≥100n\ge 100
1616 ≤5000\le 5000 ≤5000\le 5000
1717 ≤2×105\le 2\times 10^5 ≤2×105\le 2\times 10^5
1818 ≤300\le 300 ≤300\le 300 B=3k−1B = 3k - 1,kk 为正整数
1919 ≤2×105\le 2\times 10^5 ≤2×105\le 2\times 10^5
2020 ≤300\le 300 ≤300\le 300 B=3kB = 3k,kk 为正整数
2121 ≤2×105\le 2\times 10^5 ≤2×105\le 2\times 10^5
2222 ≤100\le 100 ≤100\le 100 无
2323 ≤5000\le 5000 ≤5000\le 5000
2424 ≤2×105\le 2\times 10^5 ≤2×105\le 2\times 10^5
2525