#agc045d. [agc045_d]Lamps and Buttons
[agc045_d]Lamps and Buttons
問題文
から までの番号のついた 個のランプと, から までの番号のついた 個のボタンがあります. 最初,ランプ は点灯しており,それ以外のランプは点灯していません.
すぬけくんとりんごさんは,次のようなゲームを行うことにしました.
-
まず,りんごさんが の順列 を生成する. この順列は 通りの中から一様ランダムに選ばれる. すぬけくんは,この順列を知らされない.
-
次に,すぬけくんは,以下の操作を好きなだけ繰り返す.
- 現在点灯しているランプを つ選ぶ(そのようなランプがない場合は操作を行えない). 選んだランプの番号を とする. そして,ボタン を押す. すると,ランプ の状態が反転する.つまり,ランプ がもともと点灯しているなら消灯し,もともと点灯していないなら点灯する.
すぬけくんは,常に,どのランプが点灯しているかを知ることができます. すぬけくんの勝利条件は,すべてのランプを点灯した状態にすることです. これが不可能と判明した時点ですぬけくんは負けを認めます. すぬけくんが最適に行動するとき,勝率はいくらでしょうか?
すぬけくんの勝率を とした時, は整数になります. を で割ったあまりを求めてください.
制約
入力
入力は以下の形式で標準入力から与えられる.
出力
すぬけくんの勝率を とした時, を で割ったあまりを出力せよ.
入力例 1
3 1
出力例 1
2
すぬけくんはまず,ボタン を押します. ランプ が消灯した場合はすぬけくんの負けです. そうでないときは,新しく点灯したランプに対応するボタンを押します. ここで残っていたランプが点灯すれば,すぬけくんの勝ちです. 逆に,ランプ が消灯した場合,すぬけくんの負けです. このゲームの勝率は なので, を出力します.
入力例 2
3 2
出力例 2
3
入力例 3
8 4
出力例 3
16776
入力例 4
9999999 4999
出力例 4
90395416