#include<stdio.h>
#include<iostream>
#include<map>
#include<string>
#include<string.h>
using namespace std;
map<string,int> g;
int change(char c)
{
if(c=='A'||c=='B'||c=='C')
return 2;
if(c=='D'||c=='E'||c=='F')
return 3;
if(c=='G'||c=='H'||c=='I')
return 4;
if(c=='J'||c=='K'||c=='L')
return 5;
if(c=='M'||c=='N'||c=='O')
return 6;
if(c=='P'||c=='R'||c=='S')
return 7;
if(c=='T'||c=='U'||c=='V')
return 8;
if(c=='W'||c=='X'||c=='Y')
return 9;
else
return 0;
}
int main()
{
int n,cnt,flag=0;
string c,str;
char tmp[10000];
int tt;
scanf("%d",&tt);
while(tt--)
{
flag=0;
scanf("%d",&n);
g.clear();
for(int i=0; i<n; i++)
{
cnt=0;
memset(tmp,0,sizeof(tmp));
cin>>c;
for(int j=0; j<c.length(); j++)
{
if(c[j]=='-') continue;
if(c[j]>='A'&&c[j]<='Z')
{
tmp[cnt++]=change(c[j])+'0';
}
else
tmp[cnt++]=c[j];
}
str=tmp;
g[str]++;
}
map<string, int>::iterator p;
for(p=g.begin(); p!=g.end(); p++)
{
if(p->second>1)
{
flag=1;
str=p->first;
for(int i=0; i<3; i++)
cout<<str[i];
cout<<'-';
for(int i=3; i<7; i++)
cout<<str[i];
cout<<" "<<p->second<<endl;
}
}
if(flag==0)
printf("No duplicates.\n");
if(tt)printf("\n");
}
return 0;
}
poj1002 zoj1159 map
最新推荐文章于 2022-05-06 12:02:56 发布