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