1. 题目
2. 题解
傻吊出题人,范围不写清楚
数据比较水,乱搞哈希就能过。
字符串哈希一般使用等比数列哈希
不过 tmd 比例必须用题目给出的 nc(脑残),不然过不了。
鬼知道为什么
傻吊出题人
代码:
#include <cstdio>
#include <cstring>
using namespace std;
int n,nc,a[30],strl,cnt,ans;
bool book[16000005];
char s[16000005];
int main()
{
scanf("%d%d%s",&n,&nc,s),strl=strlen(s);
for(int i=0;i<strl;i++){s[i]-='a';if(!a[s[i]])a[s[i]]=cnt++;}
for(int i=0;i+n-1<strl;i++)
{
int sum=0;
for(int j=i;j<=i+n-1;j++)sum=sum*nc+a[s[j]];
if(book[sum])continue;
ans++,book[sum]=1;
}
printf("%d\n",ans);
return 0;
}
0 条评论