atcoder#AGC057D. [AGC057D] Sum Avoidance

[AGC057D] Sum Avoidance

题目描述

正整数 S, K S,\ K が与えられます。正整数列 A = (A1, A2, , AN) A\ =\ (A_1,\ A_2,\ \ldots,\ A_N) は、次の 2 2 条件を満たすとき、良い数列であるといいます。

  • $ 1\leq\ A_1\ <\ A_2\ <\ \cdots\ <\ A_N\ \leq\ S\ -\ 1 $ が成り立つ。
  • 任意の非負整数列 (x1, x2, , xN) (x_1,\ x_2,\ \ldots,\ x_N) に対して i=1NAixi S \sum_{i=1}^NA_ix_i\neq\ S が成り立つ。

項数 N N が最大であるような良い数列のうち、辞書順最小のものを A = (A1, A2, , AN) A\ =\ (A_1,\ A_2,\ \ldots,\ A_N) とします。この数列の第 K K AK A_K を出力してください。ただし K > N K\ >\ N である場合には -1 と出力してください。

T T 個のテストケースが与えられるので、それぞれについて答えを求めてください。

输入格式

入力は以下の形式で標準入力から与えられます。

T T case1 \text{case}_1 \vdots caseT \text{case}_T

各テストケースは以下の形式で与えられます。

S S K K

输出格式

T T 行出力してください。i i 行目には、casei \text{case}_i に対する答えを出力してください。

题目大意

给定一个正整数 SS ,称一个正整数集合 AA 是好的,当且仅当它满足以下条件:

  1. AA 中元素在 [1,S)[1,S) 之间

  2. 不能用 AA 中元素多次相加得到 SS

考虑所有好的集合中元素数量最大且字典序最小的集合 AA ,多次询问,求集合 AA 从小到大排序后的第 kk 项,或集合大小小于 kk

T1000,S1018 T \le 1000 , S \le 10^{18}

13
3 1
3 2
7 1
7 2
7 3
7 4
10 1
10 2
10 3
10 4
10 5
2022 507
1000000000000000000 999999999999999999
2
-1
2
4
6
-1
3
6
8
9
-1
1351
-1

提示

制約

  • 1 T 1000 1\leq\ T\leq\ 1000
  • 3 S 1018 3\leq\ S\leq\ 10^{18}
  • 1 K  S  1 1\leq\ K\ \leq\ S\ -\ 1

Sample Explanation 1

S = 3, 7, 10 S\ =\ 3,\ 7,\ 10 の場合には、A A は次の数列になります。 - S=3 S=3 の場合:A = (2) A\ =\ (2) - S=7 S=7 の場合:A = (2,4,6) A\ =\ (2,4,6) - S=10 S=10 の場合:A = (3,6,8,9) A\ =\ (3,6,8,9)