AT_agc045_d.[AGC045D] Lamps and Buttons

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

有 NN 个编号为 11 到 NN 的灯,以及 NN 个编号为 11 到 NN 的按钮。一开始,编号为 1,2,⋯ ,A1,2,\cdots,A 的灯是点亮的,其余的灯是熄灭的。

Snuke 和 Ringo 决定进行如下游戏:

  • 首先,Ringo 生成一个 11 到 NN 的排列 (p1,p2,⋯ ,pN)(p_1,p_2,\cdots,p_N)。该排列从 N!N! 种可能中等概率随机选取。Snuke 并不知道这个排列。

  • 接下来,Snuke 可以任意多次进行如下操作:

    • 从当前点亮的灯中任选一个(如果没有点亮的灯则无法操作)。设选中的灯编号为 ii,然后按下按钮 ii。这样,编号为 pip_i 的灯的状态会被反转(如果原来点亮则变为熄灭,原来熄灭则变为点亮)。

Snuke 始终可以知道哪些灯是点亮的。Snuke 的胜利条件是让所有灯都点亮。如果确定无法达成目标,Snuke 就认输。当 Snuke 采取最优策略时,他的胜率是多少?

设 Snuke 的胜率为 ww,则 w×N!w\times N! 一定是整数。请输出 w×N!w\times N! 对 109+710^9+7 取模的结果。

输入格式

输入从标准输入读入,格式如下:

NN AA

输出格式

设 Snuke 的胜率为 ww,请输出 w×N!w\times N! 对 109+710^9+7 取模的结果。

输入输出样例

  • 输入#1

    3 1

    输出#1

    2
  • 输入#2

    3 2

    输出#2

    3
  • 输入#3

    8 4

    输出#3

    16776
  • 输入#4

    9999999 4999

    输出#4

    90395416

说明/提示

限制

  • 2≤N≤1072\leq N\leq 10^7
  • 1≤A≤min⁡(N−1,5000)1\leq A\leq \min(N-1,5000)

样例解释 1

Snuke 首先按下按钮 11。如果灯 11 被熄灭,则 Snuke 失败。否则,按下新点亮的灯对应的按钮。如果剩下的灯被点亮,则 Snuke 获胜。反之,如果灯 11 被熄灭,则 Snuke 失败。这个游戏的胜率是 1/31/3,所以输出 (1/3)×3!=2(1/3)\times 3! = 2。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页