atcoder#NOMURA2020F. Sorting Game
Sorting Game
题目描述
高橋くんとすぬけくんは、数列を使った次のようなゲームを思いつきました。
-
以上 未満の整数からなる、長さ の数列 を用意する。
-
まずすぬけくんは、以下の操作を好きな回数行う。
- ある正整数 を選び、全ての について、 を 進数で表したときの 桁目(最下位桁は 桁目とする)を にする。
-
すぬけくんの操作が全て終わったあと高橋くんは、以下の操作を好きな回数行い を昇順に並べ替えることを目指す。ここで が昇順であるとは、任意の について であることを言う。
- の隣接する 要素 を選び、 を 進数で表したときちょうど 桁が異なる場合、 をスワップする。
ゲームで使うことができる、 以上 未満の整数からなる、長さ の数列は 個存在します。
このうちゲームで使ったとき、すぬけくんがどのように操作を行ったとしても、高橋くんが適当な操作を行うことで昇順に並べ替えることができるものは何個あるでしょうか。 で割った余りを求めてください。
输入格式
入力は以下の形式で標準入力から与えられる。
输出格式
ゲームで使ったとき、すぬけくんがどのように操作を行ったとしても、高橋くんが適当な操作を行うことで昇順に並べ替えることができる数列の個数を で割った余りを出力せよ。
题目大意
高桥君和须贺君想出了一个基于数列的游戏。游戏规则如下:
首先准备一个长度为 的数列 ,其中每个元素都是 到 之间的整数。
接下来,须贺君可以任意多次进行以下操作:
选择一个正整数 ,并将 中每个元素的二进制表示的第 位(最低位为第 位)设为 。
最终,高桥君可以任意多次进行以下操作,以尝试将 排序:
选择相邻的两个元素 和 ,若它们的二进制表示恰好有一位不同,则交换 和 。 已知存在 种满足条件的长度为 的数列 。其中须贺君无论如何进行操作,高桥君都可以通过合适的交换将 排序。请将结果对 取模后输出。
输入格式
输入共一行,包含两个整数 和 。
输出格式
输出一个整数,表示可以通过合适的交换将数列 排序的数列 的数量对 取模后的结果。 翻译贡献:Lord_Sky2048
2 5
352
2020 530
823277409
提示
制約
- 入力は全て整数である。
Sample Explanation 1
例えば の場合を考えます。このとき、 - の各要素の 桁目を にすると に、 - の各要素の 桁目を にすると に、 - の各要素の 桁目を にすると に、 なります。 すぬけくんが操作を行わず が変わらない場合も含めて、いずれの場合も、 進数でちょうど 桁が異なる隣接要素のスワップを繰り返して、昇順に並び替えることができます。 よってこの数列は、ゲームで使ったとき、すぬけくんがどのように操作を行っても高橋くんが適当な操作を行うことで昇順に並べ替えることができる数列の つです。