No.2660 Sweep Cards (Easy)
タグ : / 解いたユーザー数 10
作問者 :


注意
本問題はHard版があります。Hard版と異なるのは赤文字の部分のみです。
問題文
から の番号がついた 枚のカードがあります。
番号 が書かれたカードをカード と呼びます。
はじめ、カードの山が 個左右一列に並んでおり、
左から 番目の山はカード のみからなっています。
あなたはこの山の列に対して、以下の操作を 回以上何度でも行えます。
- 山の列の連続部分列で長さ のものを選ぶ( は入力で与えられる)
- 選んだ山を左から右の順に左が上になるよう重ねる、または右から左の順に右が上になるよう重ねる
操作の形式的な説明(クリックすると詳細を表示します)
各山を、カード番号を山の上から順に並べた数列 で表します。
山の列を、数列からなる列 で表します。
数列 に対し、
で を表します。
このとき、操作は以下のとおり表されます:
- を満たす つの整数 を選ぶ
- を または で置き換える
操作の具体例による説明(クリックすると詳細を表示します)
山が つあり、各山のカード番号が以下のとおりだったとします。
- 左から 番目の山:上から順に
- 左から 番目の山: のみ
- 左から 番目の山:上から順に
- 左から 番目の山: のみ
これを(3,2,1),(4),(5,6,7),(8)
と表すとします。
これに対する操作例は以下のとおりです。
- 操作例1: で、
(3,2,1),(4)
を選び、左から右の順に重ねると、(3,2,1,4),(5,6,7),(8)
になります。 - 操作例2: で、
(4),(5,6,7),(8)
を選び、右から左の順に重ねると、(3,2,1),(8,5,6,7,4)
になります。
について、山の個数が になるまで操作した後得られるカード配置の個数を で割った余りを求めてください。
ここで、ある2つのカード配置が異なるとは、
「左から 番目の山の上から 番目のカードが、両者で異なる、または一方に存在しもう一方に存在しない」
を満たす が存在することを意味します。
制約
- 入力は全て整数
入力
以下の形式で標準入力から与えられます。出力
について、 行目に、山の個数が になるまで操作した後得られるカード配置の個数を で割った余りを出力してください。
最後に改行してください。
サンプル
サンプル1
入力
4 2 3 1 2 4
出力
22 16 1
括弧が各山を、括弧内の数値が山のカード番号を上から順に表すとします。
例えば、(3,2,1),(4)
は、
左の山のカード番号が上から順に であり、右の山はカード の一枚のみ、を表します。
初期配置は(1),(2),(3),(4)
です。
例えば次のように操作することで(3,2,1),(4)
になります。
- 長さ の連続部分列
(2),(3)
を選び、右が上になるよう重ねる。(1),(2),(3),(4)
→(1),(3,2),(4)
- 長さ の連続部分列
(1),(3,2)
を選び、右が上になるよう重ねる。(1),(3,2),(4)
→(3,2,1),(4)
また、次のように操作することで(1),(4,2,3)
になります。
- 長さ の連続部分列
(2),(3)
を選び、左が上になるよう重ねる。(1),(2),(3),(4)
→(1),(2,3),(4)
- 長さ の連続部分列
(2,3),(4)
を選び、右が上になるよう重ねる。(1),(2,3),(4)
→(1),(4,2,3)
山の個数が 個になるまで操作して得られるカード配置は、 個あります。
山の個数が 個になるまで操作して得られるカード配置は、上記例を含め 個あります。
山の個数が 個になるまで操作して得られるカード配置は、 個です。
サンプル2
入力
2 2 2 1 2
出力
2 1
サンプル3
入力
16 2 1 1
出力
937603017
で割った余りを出力することにご注意ください。
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。