http://210.44.14.31/solution/view/24587
题目标题 intelligent IME
题目大意 手机上的9格输入判定
这个题一开始以为字符串会很长,以为需要hash,结果最多6个字符,就比较简单了
#include<iostream>
#include<stdio.h>
#include<string>
#include<string.h>
using namespace std;
int a[2000000]={0};
int m1[10000];
int make(string x){
int re=0;
int len=x.size();
int b=1;
int r;
for(int i=len-1;i>=0;i--){
char s=x[i];
if(s>='a' && s<='c') r=2;
else if(s>='d' && s<='f') r=3;
else if(s>='g' && s<='i') r=4;
else if(s>='j' && s<='l') r=5;
else if(s>='m' && s<='o') r=6;
else if(s>='p' && s<='s') r=7;
else if(s>='t' && s<='v') r=8;
else r=9;
re+=b*r;
b*=10;
}
return re;
}
int main()
{
int T;
cin>>T;
for(int o=0;o<T;o++){
memset(a,0,sizeof(a));
int m,n;
string x;
cin>>m>>n;
for(int i=0;i<m;i++){
cin>>m1[i];
}
for(int i=0;i<n;i++){
cin>>x;
a[make(x)]++;
}
for(int i=0;i<m;i++){
cout<<a[m1[i]]<<endl;
}
}
return 0;
}