QOJ.ac

QOJ

実行時間制限: 2 s メモリ制限: 256 MB 満点: 100

#3910. 一次性密码

統計

如今,双因素身份验证(即用户需要使用主密码以及一个或多个一次性密码)正变得越来越普遍。考虑生成此类密码的一种可能方式。

令 $F(Q)$ 为不超过 $Q$ 的正整数中,可以表示为 $2^x - 2^y$(其中 $x, y$ 为非负整数)的数的个数。考虑所有满足 $F(Q) = N$ 的数 $Q$,并按照它们二进制表示中“1”的个数进行升序排序。如果两个数二进制表示中“1”的个数相同,则按数值大小进行比较。所提出的算法将选择该排序序列中的第 $K$ 个数。

你需要为 $T$ 次身份验证会话找到一次性密码。

输入格式

第一行包含一个整数 $T$ —— 身份验证会话的数量。接下来的 $T$ 行,每行包含两个数字 $N_i$ 和 $K_i$ —— 一次性密码生成算法的参数。

$1 \le T \le 10^5$ $1 \le N_i, K_i \le 10^{18}$

输出格式

输出 $T$ 行,每行包含一个整数 —— 对应身份验证会话的一次性密码。每个密码应模 $10^9 + 7$ 输出。如果无法生成一次性密码,则输出 -1。

样例

样例输入 1

1
16 10

样例输出 1

42

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.