atcoder#AGC033E. [AGC033E] Go around a Circle
[AGC033E] Go around a Circle
配点 : 点
問題文
円周が 個の点によって 等分され、それぞれが赤か青のいずれかで塗られているような円が、
R
と B
からなる長さ の文字列 をすべての点から生成するとは、以下の条件を満たすことを指します。
- 円周上の 個の点のうち つを任意に選び、その点上に駒を置く。
- 駒を時計回り、または反時計回りに隣合う点まで動かすことを 回繰り返す。
- このとき最初にどの点を選んだとしても、うまく動かす向きを定めることで、 回目に駒が通る円弧の色が であるようにできる。
ただし、 は R
のとき赤を、B
のとき青を指すものとします。
また駒を動かす向きは、最初に選ぶ点ごとに変えられることに注意してください。
実際に R
と B
からなる長さ の文字列 が与えられます。
円周が 等分されている円の各円弧を赤または青のいずれかで塗る 通りの方法のうち、
をすべての点から生成するような塗り方の個数を で割ったあまりを求めてください。
ただし、回転して一致するような塗り方も区別して数えます。
制約
- は
R
またはB
入力
入力は以下の形式で標準入力から与えられる。
出力
条件を満たすような各円弧の塗り方の個数を で割ったあまりを出力せよ。
4 7
RBRRBRR
2
赤と青が交互に塗られているときのみ条件を満たします。 なので、このケースの答えは となります。
3 3
BBB
4
12 10
RRRRBRRRRB
78