实现功能:第一行输入模板串;第二行输入N;接下来N行每行一个字符串,将每个字符串中出现的模板串的起始位置找出
原理:字符串双值哈希啦啦啦,和KMP其实差不太多,但是字符串双值哈希绝对是个字符串题乱搞神器!!!
1 const pa=314159;pb=951413; 2 var 3 i,j,k,l,m,n:longint; 4 ap,bp:array[0..100000] of int64; 5 ma,mb,va,vb:int64; 6 s1,s2,s3:ansistring; 7 begin 8 ap[0]:=1;bp[0]:=1; 9 for i:=1 to 100000 do10 begin11 ap[i]:=(ap[i-1]*pa) mod pb;12 bp[i]:=(bp[i-1]*pb) mod pa;13 end;14 readln(s1);15 ma:=0;mb:=0;16 for i:=1 to length(s1) do17 begin18 ma:=(ma+ord(s1[i])*ap[i]) mod pb;19 mb:=(mb+ord(s1[i])*bp[i]) mod pa;20 end;21 readln(n);22 for j:=1 to n do23 begin24 readln(s2);25 if length(s2)