hdu-1381

来源:互联网 发布:社交网络的坏处 编辑:程序博客网 时间:2024/05/29 09:01
#include<cstdio>#include<iostream>using namespace std;#define MAX 20000000bool c[MAX]; //bool 可以提高效率 char x[MAX];int ascii[26];int main() {    int n,nc,cnt;    scanf("%d",&cnt);     while(cnt--) {          scanf("%d%d",&n,&nc);          memset(c,0,sizeof(c));          memset(ascii,0,sizeof(ascii));          int tmp,res = 0;          scanf("%s",&x);          int len = strlen(x);          for(int i = 0; i < len;++i) {              ascii[x[i] - '0'] = -1;          }          int top = 0;          for(int i = 0; i < 256;++i) {                if(ascii[i] == -1) {                ascii[i] = top; //为每个字母赋值连续                 top++;                }          }          len = len - n + 1;          for(int i = 0; i < len; ++i) {              tmp = 0;              for(int j = 0; j < n; ++j) {                  tmp = tmp * nc + ascii[x[i+j] - '0'];              }              if(!c[tmp]) {                 res++;                 c[tmp] = 1;              }          }          printf("%d\n",res);    }    return 0;}