题目描述
正整数 S, K が与えられます。正整数列 A = (A1, A2, …, AN) は、次の 2 条件を満たすとき、良い数列であるといいます。
- $ 1\leq\ A_1\ <\ A_2\ <\ \cdots\ <\ A_N\ \leq\ S\ -\ 1 $ が成り立つ。
- 任意の非負整数列 (x1, x2, …, xN) に対して ∑i=1NAixi= S が成り立つ。
項数 N が最大であるような良い数列のうち、辞書順最小のものを A = (A1, A2, …, AN) とします。この数列の第 K 項 AK を出力してください。ただし K > N である場合には -1
と出力してください。
T 個のテストケースが与えられるので、それぞれについて答えを求めてください。
输入格式
入力は以下の形式で標準入力から与えられます。
T case1 ⋮ caseT
各テストケースは以下の形式で与えられます。
S K
输出格式
T 行出力してください。i 行目には、casei に対する答えを出力してください。
题目大意
给定一个正整数 S ,称一个正整数集合 A 是好的,当且仅当它满足以下条件:
-
A 中元素在 [1,S) 之间
-
不能用 A 中元素多次相加得到 S
考虑所有好的集合中元素数量最大且字典序最小的集合 A ,多次询问,求集合 A 从小到大排序后的第 k 项,或集合大小小于 k
T≤1000,S≤1018
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
- 3≤ S≤ 1018
- 1≤ K ≤ S − 1
Sample Explanation 1
S = 3, 7, 10 の場合には、A は次の数列になります。 - S=3 の場合:A = (2) - S=7 の場合:A = (2,4,6) - S=10 の場合:A = (3,6,8,9)