atcoder#ARC060D. [ARC060F] 最良表現
[ARC060F] 最良表現
配点 : 点
問題文
を長さ 以上の文字列とします。
いかなる文字列 および 以上の整数 に対しても、
を 回繰り返した文字列が と異なるならば、
を良い文字列であると呼ぶことにします。
例えば、a
, bbc
, cdcdc
などは良い文字列ですが、
aa
, bbbb
, cdcdcd
などは良い文字列ではありません。
を長さ 以上の文字列とします。 項からなる列 について、 次の条件がともに満たされるならば、 を の良い表現と呼ぶことにします。
- すべての について、 は良い文字列である。
- をこの順に連結すると になる。
例えば、aabb
の場合、 の良い表現は次の つとなります。
aabb
a
abb
aab
b
a
ab
b
a
a
b
b
文字列 の良い表現のうち、項数 が最小であるものを、
の最良表現と呼ぶことにします。
例えば、aabb
の最良表現は aabb
の つのみとなります。
文字列 が与えられます。次の つを求めてください。
- の最良表現の項数
- の最良表現の総数を で割った余り
なお、 に対し、良い表現が存在することは保証されます。
制約
- は英小文字 (
a
-z
) のみからなる文字列である
部分点
- を満たすデータセットに正解した場合は、 点が与えられる。
入力
入力は以下の形式で標準入力から与えられる。
出力
出力は 行からなる。
- 行目に、 の最良表現の項数を出力せよ。
- 行目に、 の最良表現の総数を で割った余りを出力せよ。
aab
1
1
bcbc
2
3
- この入力に対しては、項数が の最良表現が以下の 通り存在します。-
b
cbc
bc
bc
bcb
c
b
cbc
bc
bc
bcb
c
ddd
3
1