QOJ.ac

QOJ

Límite de tiempo: 1 s Límite de memoria: 1024 MB Puntuación total: 100 Interactivo

#3957. 硬币

Estadísticas

你受到了臭名昭著的魔术师 Zhivago 的挑战,参加他标志性的硬币游戏!游戏开始时有一堆 $n$ 枚硬币,你和 Zhivago 轮流从堆中拿取硬币,拿走最后一枚硬币的人为输。每名玩家每回合必须拿取 1、2 或 3 枚硬币,不多不少!

Zhivago 是他自己游戏的大师,并且总是会采取最优策略。然而,你被告知你处于获胜位置,并且可以击败 Zhivago 成为硬币游戏冠军。你能做到吗?

CC0, via Hippopx

交互

首先,你的程序应该读取一个整数 $1 \le n < 1000$,表示游戏开始时堆中的硬币数量。然后,重复以下过程:

  • 你的程序向标准输出写入一行,形式为一个整数 1、2 或 3,代表你所做的移动。
  • 在你做出移动后,你的程序应该读取一个整数 $c \in \{1, 2, 3\}$,代表 Zhivago 在他的回合拿取的硬币数量。
  • 如果只剩下一枚硬币留给 Zhivago,他将输出字符串 “I give up”。此时你的程序应该终止。

在每次移动后,不要忘记刷新输出。为此,请使用:

  • C++ 中的 fflush(stdout)cout.flush()
  • Java 中的 System.out.flush()
  • Python 中的 stdout.flush()print(output, flush=True)
  • 其他语言请参阅相关文档。

样例

输入格式 1

7

输出格式 1

2
1
3
I give up

说明

堆中初始有 $n = 7$ 枚硬币。你拿走 2 枚硬币,Zhivago 回应拿走 1 枚硬币。你拿走 3 枚硬币。由于只剩下 1 枚硬币,Zhivago 认输。

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.