64,637
社区成员
发帖
与我相关
我的任务
分享
#include<iostream>
#include<cstring>
using namespace std;
int hash[16000000];
int main(){
int change[256];
string text;
int N,NC,total=0,value=0;
int hadd,i=0;
memset(change,-1,sizeof(change));
cin>>N>>NC;
cin>>text;
for(i=0;text[i]!='\0';i++)
{
if(change[text[i]]==-1)
change[text[i]]=1;
}
for(i=0;i<256;i++)
{
if(change[i]!=-1)
change[i]=value++;
}
for(i=0;text[i+N-1]!='\0';i++)
{
hadd=0;
for(int j=i;j<N+i;j++)
{
hadd=hadd*NC+change[text[j]];
}
if(!hash[hadd])
{
hash[hadd]=1;
total++;
}
}
cout<<total<<endl;
return 0;
}