数字王国的警报密码

PDF 视图

提交程序

分数: 1
时间限制: 1.5s
内存限制: 256M

作者:
题目类型

题目描述

在数字王国中,国王最近遇到一个棘手的难题。他需要为宝库设置一系列长度为 \(n\) 且严格递增的密码数字。然而,王国的古老魔法有一个特殊的禁忌:任何一个连续密码段(至少包含一个数字)的总和,都绝对不能是某个神秘数字 \(k\) 的倍数。一旦违反,宝库的警报就会响起,后果不堪设想。

国王将此重任交给了你,他的首席密码师。你需要为每次任务设计符合要求的密码序列。作为最优秀的密码师,你不仅要构造出满足条件的序列,还要确保它是最优的:在所有可能的合法序列中,你需要找出那个字典序最小的序列。

什么是字典序最小?我们比较两个长度相同的序列 \(A=[a_1, a_2, \dots, a_n]\) 和 \(B=[b_1, b_2, \dots, b_n]\):

  • 从第一个位置开始比较。
  • 找到第一个满足 \(a_i \ne b_i\) 的位置 \(i\)。
  • 如果 \(a_i < b_i\),则称序列 \(A\) 的字典序小于序列 \(B\)。
  • 如果所有对应位置的元素都相等,则两个序列字典序相同。

你将面对多次挑战(多次测试数据)。每次挑战会给你两个关键数字: \(n\) 表示你需要设置的密码序列长度,\(k\) 表示那个神秘的危险数字。

你的任务是构造一个严格单调递增的正整数序列 \(a_1, a_2, \dots, a_n\),使得该序列中任意一个长度至少为 \(1\) 的连续子序列(即连续几个密码)的数字之和都不能被 \(k\) 整除,并且使它的字典序最小。

输入格式

第一行输入一个整数 \(T\)(\(1 \le T \le 10^5\)),代表你将面临的挑战次数。

接下来 \(T\) 组数据,每组数据一行,包含两个整数 \(n\) 和 \(k\)(\(1 \le n, k \le 2 \times 10^5\))。

注意:所有挑战中的 \(k\) 的总和不会超过 \(2 \times 10^6\)。

输出格式

对于每一次挑战:如果存在满足要求的密码序列,则输出一行 \(n\) 个用空格分隔的整数,代表你构造的序列。如果无论怎样都无法构造出满足“连续和禁忌”的递增序列,则输出一行 \(-1\)。

样例输入

3
3 10
2 3
100 1

样例输出

1 2 3
1 4
-1

评论

目前没有评论。