SP15249 SWAP_MED - Swap (Medium - Level 200)

题目描述

我们来进行一个关于非负整数序列的游戏。现有两个长度为 $n$ 的非负整数序列 $(a_1, a_2, \ldots, a_n)$ 和 $(b_1, b_2, \ldots, b_n)$。这两个序列中的最大元素都小于 $k$,即 $\max(a_1, a_2, \ldots, a_n) < k$ 且 $\max(b_1, b_2, \ldots, b_n) < k$。游戏规则是,你可以进行以下操作:在每个位置上交换 $a_i$ 和 $b_i$ 的值。目标是让序列 $a$ 和 $b$ 都成为递增序列,即满足 $a_i \leq a_{i+1}$ 和 $b_i \leq b_{i+1}$。不过,并不是所有初始序列 $a$ 和 $b$ 都能够通过操作解决。 例如,序列对 (2,0) 和 (0,1) 就无法通过任何操作变成递增序列: - 如果不进行任何交换,序列保持为 (2,0) 和 (0,1),其中 (2,0) 不是递增的。 - 如果仅交换第一个元素,序列变为 (0,0) 和 (2,1),其中 (2,1) 不递增。 - 如果仅交换第二个元素,序列变为 (2,1) 和 (0,0),其中 (2,1) 不递增。 - 如果交换所有元素,序列得 (0,1) 和 (2,0),其中 (2,0) 仍不递增。 因此,对于初始序列 (2,0) 和 (0,1),无法通过任何方案使得两个序列同时递增。 现在,给定整数 $n$ 和 $k$,请你计算有多少种不同的初始序列对 $(a, b)$ 能够通过这场游戏变为递增序列。

输入格式

第一行输入一个整数 $T$,表示测试用例的数量。接下来 $T$ 行,每行有两个整数 $n$ 和 $k$,用空格隔开。

输出格式

对于每个测试用例,输出能够解决的不同初始序列对 $(a, b)$ 的数量。由于结果可能非常大,请输出结果对 $10^9 + 7$ 取模后的值。

说明/提示

- $1 \leq T \leq 10^5$ - $1 \leq n \leq 10^5$ - $1 \leq k \leq 10^5$ **本翻译由 AI 自动生成**