#include<cstdio> #include<iostream> #include<cstring> #include<string> using namespace std; int array[16000000]; int hash[256]; char s[160000000]; #define mem(a) memset(a,0,sizeof(a)) int main() { int n,m; while(scanf("%d%d",&n,&m)==2) { cin>>s; int cnt=0;int len=strlen(s); mem(array); mem(hash); for(int i=0; i<len; i++) { if(hash[s[i]]==0) hash[s[i]]=cnt++; } int res=0; for(int i=0; i+n<=len; i++) { int sum=0; for(int j=i; j<i+n; j++) { sum*=m; sum+=hash[s[j]]; } if(!array[sum]) { res++; array[sum]=1; } } cout<<res<<endl; } return 0; }
时间: 2024-10-09 01:54:49