QOJ.ac

QOJ

时间限制: 2 s 内存限制: 256 MB 总分: 100

#6642. (1, 2) Nim

统计

Sprague 和 Grundy 正在玩一个游戏。现有 $N$ 堆石子,编号为 $1, 2, \dots, N$。第 $i$ 堆包含 $A[i]$ 个石子。

定义一次移动如下: * 选择一个非空堆,并从中移除任意数量的石子。形式化地说,选择某个 $i$ 满足 $A[i] > 0$,并选择 $1 \le j \le A[i]$,然后将 $A[i]$ 替换为 $A[i] - j$。

玩家轮流进行操作,由 Sprague 先手。在 Sprague 的回合中,他必须恰好进行一次移动。Grundy 回合的规则如下: 首先,Grundy 必须进行一次移动。 在这次移动之后,如果至少还剩下一颗石子,他必须再恰好进行一次移动。

移除最后一颗石子的玩家获胜。假设双方均采取最优策略,求谁会获胜。

输入格式

第一行包含一个整数 $T$,表示测试用例的数量。接下来是 $T$ 个测试用例,每个测试用例包含两行: 第一行包含 $N$。 第二行包含 $N$ 个空格分隔的整数 $A[1], A[2], \dots, A[N]$。

数据范围

  • $1 \le T \le 10^4$
  • $1 \le N \le 10^5$
  • $1 \le A[i] \le 10^9$,对于所有 $1 \le i \le N$
  • 所有测试用例的 $N$ 之和不超过 $10^5$

输出格式

对于每个测试用例,输出一行,如果 Sprague 获胜则输出 Sprague,否则输出 Grundy。 请注意,检查器是区分大小写的。输出 spraguesPRAGuE 而不是 Sprague 将会导致 Wrong Answer

样例

输入 1

3
2
1 2
1
5
4
1 7 2 9

输出 1

Grundy
Sprague
Grundy

说明

在第一个测试用例中,可以验证 Grundy 获胜。例如,如果 Sprague 从第二堆中移除了 1 颗石子,那么在 Grundy 的回合中,他可以在第一次移动时从第一堆移除 1 颗石子,并在第二次移动时从第二堆移除 1 颗石子。如果 Sprague 从第二堆中移除了 2 颗石子,Grundy 可以通过一次移动移除仅剩的那一颗石子,从而立即赢得游戏。

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
#136EditorialOpen题解jiangly2025-12-12 23:29:43View

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.