ちょっと勉強したのでメモ
を定数、長さの文字列をとすると で計算される値をローリングハッシュと言うらしい
での部分文字列のローリングハッシュの値は で計算できる
また、長さの文字列を後ろにくっつけた時のローリングハッシュの値は、で計算できる
ハッシュ値の衝突についてはハッシュを衝突させる話
ソースコード
衝突を起こらないようにするには、複数のmodで計算するのがいいらしい
例題
AOJ2444
Codeforces Round0291 Div2 C
参考にしたサイト
http://d.hatena.ne.jp/say_hello_to_okaoka/20140204/1391484891
http://algoogle.hadrori.jp/algorithm/rolling-hash.html
http://kmjp.hatenablog.jp/entry/2015/02/15/0900
あり本第二版には載ってるらしい。購入しないとなあ