QOJ.ac

QOJ

時間限制: 4 s 記憶體限制: 2048 MB 總分: 100 互動

#9060. 序列猜测

统计

你需要创建一个难以被猜出的秘密整数序列。该序列需满足以下约束:

  • 序列的第一个数字必须是 $0$。
  • 序列的最后一个数字必须是 $100\,000$。
  • 序列中的每个数字必须比前一个数字大 $1$ 或 $2$。

起初,你只需要公布序列的长度。随后,对手将逐个猜测序列中的数字。

  • 如果猜测的数字在你的序列中,你必须准确指出它在序列中的位置。
  • 如果猜测的数字不在你的序列中,你只需告知它不在序列中。这被视为一次“失误”(miss)。

注意,由于你不必预先写下序列,你可以通过改变你心中所想的序列来“作弊”,只要它不与你目前已透露的信息相矛盾即可。事实证明,在这些条件下,你总是可以迫使对手在猜出你序列中的所有数字之前产生 $33\,333$ 次失误。你的任务就是编写一个能做到这一点的程序。

交互

这是一个交互式问题。

你的程序应首先输出一个整数 $k$ ($2 \le k \le 100\,001$),即你序列的长度,占一行。此后,你将在一行中接收到一个整数 $x$。该整数保证在 $-1$ 到 $100\,000$ 之间(含边界)。

  • 如果 $x = -1$,说明对手已经放弃;你的程序应按顺序输出序列中的所有 $k$ 个整数,每行一个,然后退出。对手保证在产生 $33\,333$ 次失误后会给出此输入,但也可能更早给出。在输出所有 $k$ 个整数后,你的程序应退出。如果你输出的序列与之前的回答一致,则该测试用例将被判定为正确。
  • 如果 $x$ 不在你的序列中,输出 $-1$,占一行。
  • 如果 $x$ 在你的序列中,输出一个整数 $i$,占一行,使得 $x$ 是序列中的第 $i$ 个数字(从 $1$ 开始计数)。如果你已经输出了从 $1$ 到 $k$ 的所有整数,你的程序现在应该退出,否则你的提交将收到 Wrong Answer 判决。

请记住在每次输出整数后刷新缓冲区。

在此之后,如果你的程序尚未退出,过程将重复,你将接收到另一个整数。对手保证绝不会重复猜测同一个数字。

对手在不同的运行中可能会采用不同的猜测策略。

样例

输入格式 1

50001
0
1
-1

输出格式 1

0
1
-1

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.