AT_agc045_d.[AGC045D] Lamps and Buttons
NOI/NOI+/CTSC
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
有 N 个编号为 1 到 N 的灯,以及 N 个编号为 1 到 N 的按钮。一开始,编号为 1,2,⋯,A 的灯是点亮的,其余的灯是熄灭的。
Snuke 和 Ringo 决定进行如下游戏:
-
首先,Ringo 生成一个 1 到 N 的排列 (p1,p2,⋯,pN)。该排列从 N! 种可能中等概率随机选取。Snuke 并不知道这个排列。
-
接下来,Snuke 可以任意多次进行如下操作:
- 从当前点亮的灯中任选一个(如果没有点亮的灯则无法操作)。设选中的灯编号为 i,然后按下按钮 i。这样,编号为 pi 的灯的状态会被反转(如果原来点亮则变为熄灭,原来熄灭则变为点亮)。
Snuke 始终可以知道哪些灯是点亮的。Snuke 的胜利条件是让所有灯都点亮。如果确定无法达成目标,Snuke 就认输。当 Snuke 采取最优策略时,他的胜率是多少?
设 Snuke 的胜率为 w,则 w×N! 一定是整数。请输出 w×N! 对 109+7 取模的结果。
输入格式
输入从标准输入读入,格式如下:
N A
输出格式
设 Snuke 的胜率为 w,请输出 w×N! 对 109+7 取模的结果。
输入输出样例
输入#1
3 1
输出#1
2
输入#2
3 2
输出#2
3
输入#3
8 4
输出#3
16776
输入#4
9999999 4999
输出#4
90395416
说明/提示
限制
- 2≤N≤107
- 1≤A≤min(N−1,5000)
样例解释 1
Snuke 首先按下按钮 1。如果灯 1 被熄灭,则 Snuke 失败。否则,按下新点亮的灯对应的按钮。如果剩下的灯被点亮,则 Snuke 获胜。反之,如果灯 1 被熄灭,则 Snuke 失败。这个游戏的胜率是 1/3,所以输出 (1/3)×3!=2。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?