QOJ.ac

QOJ

Límite de tiempo: 10.0 s Límite de memoria: 256 MB Puntuación total: 100

#15980. 无聊的卡牌游戏

Estadísticas

尼尔·斯蒂芬森(Neal Stephenson)的小说《密码故事》(Cryptonomicon)中包含一种基于一副扑克牌的加密算法。书中强调,适当的洗牌对于密码安全至关重要。在本题中,我们希望通过描述一个不使用洗牌、因此结果可预测的卡牌游戏,来展示随机性在密码学中的重要性。

该游戏是扑克牌的一种变体,不仅所有卡牌对所有人都是可见的,而且玩家对游戏进程完全没有任何影响。非常无聊,不是吗?

一轮游戏(game session)由(可能)许多局游戏(games)组成,并由 $N$ 名玩家参与。为简单起见,我们假设玩家排成一排,从左到右依次编号为 $1 \dots N$。牌堆中恰好包含 $5 \times N$ 张卡牌,编号为 $1, 2, \dots, 5N$。

在每局游戏开始时,卡牌分三轮分发。首先,按从左到右的顺序向每位玩家分发两张牌。也就是说,玩家 1 获得最顶部的两张牌,然后玩家 2 获得接下来的两张牌,依此类推,直到最后一位玩家 $N$ 获得他/她的牌。在第二轮中,重复这一步骤,每位玩家以相同的方式再获得两张牌。最后,每位玩家再获得一张牌。

收到包含最小的五张牌($1, 2, 3, 4, 5$,不一定按此顺序)的玩家是整轮游戏的获胜者。

如果没有人获胜,则将卡牌收回并开始一局新游戏。收牌时,按从右到左的顺序从玩家手中收集卡牌,并且每位玩家的卡牌总是按照与分发时相反的顺序一张一张地收集。每张牌被放置在牌堆顶部,接着另一张牌放在它上面,依此类推。也就是说,牌堆的顶部将包含玩家 1 的卡牌,且最顶部的六张卡牌将是原牌堆中位置为 $1, 2, 2N + 1, 2N + 2, 4N + 1, 3$ 的卡牌。

例如,在两名玩家的游戏中,初始牌堆包含十张牌:A, B, C, D, E, F, G, H, I, J。在第一轮分牌中,玩家 1 获得卡牌 A 和 B,玩家 2 获得 C 和 D。然后将 E 和 F 分发给玩家 1,G 和 H 分发给玩家 2,接着将 I 分发给玩家 1,最后将 J 分发给玩家 2。收牌时,首先收集玩家 2 的卡牌,顺序为 J, H, G, D, C。然后继续收集玩家 1 的卡牌 I, F, E, B, A。由于卡牌是自底向上放回牌堆的,因此一局游戏后卡牌的最终顺序为 A, B, E, F, I, C, D, G, H, J。

编写一个程序来确定一轮游戏的结果,以便你可以向玩家们剧透游戏结果。

输入格式

输入包含多轮游戏。每轮游戏由两行描述。第一行包含数字 $N$($1 \le N \le 1000$)。第二行包含卡牌编号 $1 \dots 5N$,按从牌堆顶部到低部的顺序排列。该行中每两个相邻的数字之间用单个空格分隔。每个数字在该行中恰好出现一次。

最后一个描述之后是一行,包含一个零。

输出格式

对于每轮游戏,输出恰好一行。如果没有玩家获胜,输出 "Neverending game.";否则输出句子 "Player P wins game number G.",其中 $P$ 是玩家编号,$G$ 是第一局获胜的游戏局数(第一局游戏编号为 1)。请注意,结果可能会超过 $2^{32}$,但总是小于 $2^{63}$。

样例

输入样例 1

2
2 3 9 7 4 8 5 1 10 6
2
2 6 9 7 4 8 5 1 10 3
5
16 12 18 11 20 15 19 24 8 6 25 1 7 22 14 2 3 10 13 17 4 5 21 9 23
0

输出样例 1

Player 1 wins game number 3.
Neverending game.
Player 2 wins game number 153.

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.