远古题解 2020-05-12
此题,关键是字符串的转换
话不多说,献上代码
/*#include<iostream>
#include<algorithm>
#include<cstring>*/
#include<bits/stdc++.h>
using namespace std;
string b[100002];
int a;
char IT[26]={'2','2','2','3','3','3','4','4','4','5','5','5','6','6','6','7',' ','7','7','8','8','8','9','9','9',' '};//26个字母对应的值
int main()
{
cin>>a;
for(int i=1;i<=a;i++)
{
string c;
cin>>c;
int len=c.size();
for(int j=0;j<len;j++)
{
if(c[j]>='0'&&c[j]<='9') b[i]+=c[j];
else if(c[j]>='A'&&c[j]<='Y'&&c[j]!='Q') b[i]+=IT[c[j]-'A'];
} //把字符串转换成号码
}
sort(b+1,b+1+a); //给号码排序
bool k=false;
int num=1;
for(int i=2;i<=a+1;i++)
{
if(b[i-1]!=b[i])
{
if(num>=2)
{
cout<<b[i-1].substr(0,3)<<"-"<<b[i-1].substr(3,4)<<" "<<num<<endl;
k=true;
}
num=1;
}
else
num++; //统计相同号码的个数
}
if(!k) cout<<"No duplicates."<<endl;
return 0;
}