//hdu Crazy Search(Hash)
#include<iostream>
#include<string.h>
#include<cstdio>
using namespace std;
const int N=16000010;
char str1[N];
bool hash[N];
int ascii[266];
int main()
{
int n,nc;
int len;
int t;
cin>>t;
while(t--)
{
scanf("%d%d",&n,&nc);
memset(hash,0,sizeof(hash));
memset(ascii,0,sizeof(ascii));
scanf("%s",str1);
len=strlen(str1);
for(int i=0;i<len;++i)
{
ascii[str1[i]]=-1;
}
int nct=0;
for(int i=0;i<266;++i)
{
if(ascii[i]==-1)
{
ascii[i]=nct++;
}
}
int sum=0;
int ans=0;
for(int i=0;i<=len-n;++i)
{
sum=0;
for(int j=0;j<n;j++)
{
sum=sum*nc+ascii[str1[i+j]];
}
if(hash[sum]==0)
{
ans++;
hash[sum]=1;
}
}
printf("%d\n",ans);
}
return 0;
}
hdu Crazy Search(Hash)
最新推荐文章于 2020-03-27 12:30:01 发布