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;}