問題一覧 > 教育的問題

No.8014 多項式ハッシュに関する教育的な問題

レベル : / 実行時間制限 : 1ケース 5.000秒 / メモリ制限 : 256 MB / スペシャルジャッジ問題 (複数の解が存在する可能性があります)
タグ : / 解いたユーザー数 14
作問者 : anta
4 ProblemId : 804 / 自分の提出
問題文最終更新日: 2016-06-03 23:31:44

問題文

多項式ハッシュ(ローリングハッシュ, Karp-Rabin fingerprintとも呼ばれる)は、整数P,Bをパラメーターとして取り、文字列Sに対して hP,B(S)=(i=1|S|B|S|iord(Si))modP として定義される。ここで、|S|Sの長さを表す。ord(c)は文字cのアスキーコード('a'~'z'は97~122)を表す。xmodPとしてxPで割った余りを表す。

P, Bが与えられる。2つの文字列S,Tであって、

  • ST
  • |S|=|T|
  • 1|S|,|T|105
  • S,T はそれぞれ英小文字('a'~'z')のみからなる。
  • hP,B(S)=hP,B(T)
以上の条件を全て満たすものを1組求めよ。答えが複数ある場合はそのうちどれを出力してもよい。

入力

P
B

1行目と2行目に、多項式ハッシュ関数のパラメータである整数Pと整数Bが与えられる。
ただし、テストケースは1ケースだけであり、その内容は以下の通りであることが保証される。

1000000000000000003
123456789987654321

出力

S
T

問題文の条件を満たすS,Tを2行に出力せよ。

サンプル

サンプル1
入力
1009
123
出力
bab
wbe

hP,B(S)=hP,B(T)=342となる。

サンプル2
入力
1000000007
123456789
出力
hkmpqvm
axlszsi

hP,B(S)=hP,B(T)=409775251となる。

ヒント

テストケースのP,Bに特に深い意味はありません。

0B<P1018であるとしても想定解法が任意の入力に対して制限時間内に必ず正しい答えを出力できることは保証されません。
ただし、単純な埋め込みではなく、テストケースに対しては制限時間内に答えを生成していることは確かです。
よって、埋め込み以外の方法で解いてください。

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。