当前位置: 代码迷 >> 综合 >> PKU1200 Crazy Search
  详细解决方案

PKU1200 Crazy Search

热度:43   发布时间:2023-10-09 11:17:02.0

Description

给一个字符串找到长度为n的不同子串的个数。

Sample Input

3 4
daababac

Sample Output

5

思路

为了不让子串重复,转化为nc进制或者mod一个玄学的系数存入hash表中。
consth=1000007;
vara,b:array[1..h] of longint;l,i,n,nc,x,j,ans,sum:longint;s:string;
beginreadln(n,nc);readln(s);l:=length(s);for i:=1 to l doif a[ord(s[i])-65]=0 thenbegininc(x);a[ord(s[i])-65]:=x;end;for i:=1 to l-n+1 dobeginsum:=0;for j:=i to n+i-1 dosum:=sum*nc+a[ord(s[j])-65];sum:=sum mod h;if b[sum]=0 thenbegininc(ans);b[sum]:=1;end;end;writeln(ans);
end.
  相关解决方案