题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4287
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int hash[1000005];
int a[5005];
char str[10];
int judge(char c)
{
if('a'<=c&&c<='c')
return 2;
else if('d'<=c&&c<='f')
return 3;
else if('g'<=c&&c<='i')
return 4;
else if('j'<=c&&c<='l')
return 5;
else if('m'<=c&&c<='o')
return 6;
else if('p'<=c&&c<='s')
return 7;
else if('t'<=c&&c<='v')
return 8;
else if('w'<=c&&c<='z')
return 9;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n,m;
scanf("%d%d",&n,&m);
for(int i=0; i<n; i++)
scanf("%d",&a[i]);
memset(hash,0,sizeof(hash));
for(int i=1; i<=m; i++)
{
scanf("%s",str);
int l=strlen(str);
int sum=0;
for(int j=0; j<l; j++)
sum=sum*10+judge(str[j]);
hash[sum]++;
}
for(int i=0; i<n; i++)
printf("%d\n",hash[a[i]]);
}
return 0;
}