問題 解き方 ローリングハッシュ。 クラス化したものを自分で持っとくとラクそう。あとでやろ。 ローリングハッシュの説明自体は、他の記事だったり本だったりにおまかせします。 具体的な方法 入力例1の「abcbac」でやってみます。 最初は、左半分の「abc」と、右半分を反転させた「cab」が一致してるかどうかを見る。 ここからローリングします。i(1≦i≦N)回目の操作では、 ・左半分の「abc」→ 右からi番目の文字を消す「ab」→さっき消した位置に今度は元の文字列の右からi番目の文字を挿入する「abc」 ・右半分を反転させた「cab」→ 先頭の文字を消す「ab」→末尾に元の文字列のN-i+1文字目を挿入する「abc」 のように文字列を動かして、同じかどうか判定します。 細かいことはコードを見てください。 ACコード import random N = int(input()) T = i