AT_agc045_d [AGC045D] Lamps and Buttons

题目描述

有 $N$ 个编号为 $1$ 到 $N$ 的灯,以及 $N$ 个编号为 $1$ 到 $N$ 的按钮。一开始,编号为 $1,2,\cdots,A$ 的灯是点亮的,其余的灯是熄灭的。 すぬけくん和りんごさん决定进行如下游戏: - 首先,りんごさん生成一个 $1$ 到 $N$ 的排列 $(p_1,p_2,\cdots,p_N)$。该排列从 $N!$ 种可能中等概率随机选取。すぬけくん并不知道这个排列。 - 接下来,すぬけくん可以任意多次进行如下操作: - 从当前点亮的灯中任选一个(如果没有点亮的灯则无法操作)。设选中的灯编号为 $i$,然后按下按钮 $i$。这样,编号为 $p_i$ 的灯的状态会被反转(如果原来点亮则变为熄灭,原来熄灭则变为点亮)。 すぬけくん始终可以知道哪些灯是点亮的。すぬけくん的胜利条件是让所有灯都点亮。如果确定无法达成目标,すぬけくん就认输。当すぬけくん采取最优策略时,他的胜率是多少? 设すぬけくん的胜率为 $w$,则 $w\times N!$ 一定是整数。请输出 $w\times N!$ 对 $10^9+7$ 取模的结果。

输入格式

输入从标准输入读入,格式如下: > $N$ $A$

输出格式

设すぬけくん的胜率为 $w$,请输出 $w\times N!$ 对 $10^9+7$ 取模的结果。

说明/提示

## 限制 - $2\leq N\leq 10^7$ - $1\leq A\leq \min(N-1,5000)$ ## 样例解释 1 すぬけくん首先按下按钮 $1$。如果灯 $1$ 被熄灭,则すぬけくん失败。否则,按下新点亮的灯对应的按钮。如果剩下的灯被点亮,则すぬけくん获胜。反之,如果灯 $1$ 被熄灭,则すぬけくん失败。这个游戏的胜率是 $1/3$,所以输出 $(1/3)\times 3! = 2$。 由 ChatGPT 4.1 翻译