检测到 KaTeX 加载失败,可能会导致文中的数学公式无法正常渲染。
#题面
#题目描述
有 堆石子,第 堆有 个。
Alice 和 Bob 轮流取石子(先后手未定),Alice 每次从一堆中取走 个,Bob 每次从一堆中取走 个,无法操作者输。
不难发现只会有四种情况:Alice 必胜、Bob 必胜、先手必胜、后手必胜。
你需要选定若干堆石子(共有 种方案),Alice 和 Bob 只能在你选出的堆中取,问以上四种情况对应的方案数。对 取模。
#输入格式
第一行三个整数 ,第二行 个整数 。
#输出格式
一行四个整数,分别表示 Alice 必胜、Bob 必胜、先手必胜和后手必胜的方案数,对 取模。
#输入输出样例
样例输入 #1
2 2 3
2 3
样例输出 #1
2 0 1 1
样例解释 #1
选定空集时后手必胜,选定 时 Alice 必胜,选定 时先手必胜,选定 时 Alice 必胜。
#数据范围与约定
- 对于 的数据,;
- 对于 的数据,;
- 对于另外 的数据,;
- 对于另外 的数据,;
- 对于 的数据,,。
#思路
先令每次取的石子较少的一方为 Alice,另一方为 Bob。
显然 中只有 能对答案产生贡献,将其记为 。
每堆石子可以分为以下几种情况:
- :这堆石子谁也取不到。
- :只要存在这种情况则 Alice 必胜,因为取到最后的时候 Alice 能多取一次而 Bob 不能。
- :这种情况下,取走本堆的那个人能多走一步,相当于改变先后手顺序。
- :这种情况下,Alice 能多走至少 2 步,Bob 能多走至少 1 步。
- 如果 Alice 先手,则 Alice 必胜(先从该堆中取走一次后相当于多了一个情况 2);
- 如果 Bob 先手,则相当于多出了一个情况 3;
- 如果这个情况出现了两次,则 Alice 不论先手后手都必胜。
对于情况 1,在计算最终答案时乘上 即可。
计算先手必胜的方案数:
计算后手必胜的方案数:
#代码
1 |
|