#ATagc045d. [AGC045D] Lamps and Buttons
[AGC045D] Lamps and Buttons
题目描述
有 个编号为 到 的灯,以及 个编号为 到 的按钮。一开始,编号为 的灯是点亮的,其余的灯是熄灭的。
Snuke 和 Ringo 决定进行如下游戏:
-
首先,Ringo 生成一个 到 的排列 。该排列从 种可能中等概率随机选取。Snuke 并不知道这个排列。
-
接下来,Snuke 可以任意多次进行如下操作:
- 从当前点亮的灯中任选一个(如果没有点亮的灯则无法操作)。设选中的灯编号为 ,然后按下按钮 。这样,编号为 的灯的状态会被反转(如果原来点亮则变为熄灭,原来熄灭则变为点亮)。
Snuke 始终可以知道哪些灯是点亮的。Snuke 的胜利条件是让所有灯都点亮。如果确定无法达成目标,Snuke 就认输。当 Snuke 采取最优策略时,他的胜率是多少?
设 Snuke 的胜率为 ,则 一定是整数。请输出 对 取模的结果。
输入格式
输入从标准输入读入,格式如下:
输出格式
设 Snuke 的胜率为 ,请输出 对 取模的结果。
样例 1
输入
3 1
输出
2
样例 2
输入
3 2
输出
3
样例 3
输入
8 4
输出
16776
样例 4
输入
9999999 4999
输出
90395416
说明/提示
限制
样例解释 1
Snuke 首先按下按钮 。如果灯 被熄灭,则 Snuke 失败。否则,按下新点亮的灯对应的按钮。如果剩下的灯被点亮,则 Snuke 获胜。反之,如果灯 被熄灭,则 Snuke 失败。这个游戏的胜率是 ,所以输出 。
由 ChatGPT 4.1 翻译