シーザー暗号を知っていますか?
シーザー暗号とは、文字列の各文字を、辞書順で同じだけずらしたものです。
例えば、 mojacoder
を つずらすと npkbdpefs
になります。
高橋君は暗号化されたメッセージを青木君から受け取りました。
二人の間では秘密の文字列が共有されていて、青木君はメッセージに含まれる秘密の文字列の個数によって秘密の内容を表現します。
ただし、秘密の文字列はずらされている可能性があります。
長さが である文字列 が与えられます。
文字列 の中に のシフト は何個含まれていますか?
ここで、ある文字列 が文字列 のシフト であるとは、 かつ、ある が存在し、 すべての に対して、文字コードが であると定義します。
例えば MojaCoder
のシフトは MojaCoder
, NpkbDpefs
, ... です。
答えを 行に出力せよ。
9 2 mojacoder ac
2
mojacoder
には ac
が つ、 mo
が つ含まれています。
よって、 ac
のシフトは合計 つ含まれています。
44 2 The quick brown fox jumps over the lazy dog. if
3
ro
が つ、 he
が つ含まれます。
C++er 向けの情報: cin >> S
では The
までしか入力されないので、 std::getline(cin, S)
を使いましょう。
26 5 ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDE
22
に含まれる のシフトは互いに重なっている場合もあります。