#arc089d. [arc089_d]ColoringBalls
[arc089_d]ColoringBalls
問題文
の番号のついた 個の白いボールがこの順に一列に並んでいます。 シカのAtCoDeerくんはこれらのボールに赤と青で色を塗りたいと考えています。 ただし、最終的に白のままのボールがある可能性もあります。
長さ の文字列 が与えられます。 AtCoDeerくんは から まで順に次の操作を行います。
- 番目の操作: 連続するボールの区間(空でもよい)を一つ選んで、 の 文字目が
r
なら赤で、b
なら青でそのボール達を塗る
ただし、既に色が塗られているボールに再度色を塗った場合、色は上書きされます。 また、塗料の都合上 まだ色が塗られていない白いボールを直接青で塗ることはできません。 すなわち、 の 文字目が b
のとき、白いボールを含む区間を選ぶことはできません。
すべての操作が終わったあとにありうるボールの色の列が何通りありうるか求めてください。 答えは大きくなる可能性があるので、 で割ったあまりを求めてください。
制約
- \=
- は
r
かb
のみからなる - は整数
入力
入力は以下の形式で標準入力から与えられる。
出力
すべての操作が終わったあとにありうるボールの色の列が何通りあるかを で割ったあまりを出力せよ。
入力例 1
2 2
rb
出力例 1
9
赤をr
,青をb
,白をw
で表すと、最終的にあり得るボールの列は次の 通りです。
ww
, wr
, rw
, rr
, wb
, bw
, bb
, rb
, br
入力例 2
5 2
br
出力例 2
16
白いボールに直接青を塗ることは出来ないので、 回目の操作では空の区間を選ぶしかありません。
入力例 3
7 4
rbrb
出力例 3
1569
入力例 4
70 70
bbrbrrbbrrbbbbrbbrbrrbbrrbbrbrrbrbrbbbbrbbrbrrbbrrbbbbrbbrbrrbbrrbbbbr
出力例 4
841634130