总时间限制: 1000ms 内存限制: 65536kB
描述
在美国,商家都喜欢用好记的电话号码。人们常用的方法就是把电话号码拼成一个便于记忆的词汇或者短语,比如你可以通过Gino比萨店的电话号码301- GINO来定比萨。另一个方法就是把电话号码分为成组的数字,比如你可以通过必胜客的电话“三个十”:3-10-10-10来定比萨。
一个七位电话号码的标准形式是xxx-xxxx,如 123-4567。
通常,电话上的数字与字母的映射关系如下
A, B, C 映射到 2
D, E, F 映射到 3
G, H, I 映射到 4
J, K, L映射到5
M, N, O映射到6
P, R, S映射到7
T, U, V映射到8
W, X, Y映射到9
Q和Z并没有相关的映射。
你的任务就是把一个七位电话号码转为标准的xxx-xxxx格式,其中x表示数字
- 输入
第一行为输入的电话号码个数n(n < 100), 下面n行每行表示一个七位号码,这些号数为了便于记忆可能不是标准格式,但一定是合法的。 - 输出
对于行输入,输出一个标准格式的电话号码 - 样例输入
12
4873279
ITS-EASY
888-4567
3-10-10-10
888-GLOP
TUT-GLOP
967-11-11
310-GINO
F101010
888-1200
-4-8-7-3-2-7-9-
487-3279 - 样例输出
487-3279
487-3279
888-4567
310-1010
888-4567
888-4567
967-1111
310-4466
310-1010
888-1200
487-3279
487-3279
题解:
– 及其骚气的模拟题,反正我觉得简单但恶心
代码:
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
const int MAXN=1;
int n,sum;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
string s;
cin>>s;
int l=s.length();
sum=0;
for(int j=0;j<l;j++){
if(s[j]!='-'){
if(s[j]>='0'&&s[j]<='9')
printf("%c",s[j]);
else{
if(s[j]=='A'||s[j]=='B'||s[j]=='C')
printf("%d",2);
else if(s[j]=='D'||s[j]=='E'||s[j]=='F')
printf("%d",3);
else if(s[j]=='G'||s[j]=='H'||s[j]=='I')
printf("%d",4);
else if(s[j]=='J'||s[j]=='K'||s[j]=='L')
printf("%d",5);
else if(s[j]=='M'||s[j]=='N'||s[j]=='O')
printf("%d",6);
else if(s[j]=='P'||s[j]=='R'||s[j]=='S')
printf("%d",7);
else if(s[j]=='T'||s[j]=='U'||s[j]=='V')
printf("%d",8);
else
printf("%d",9);
}
sum++;
if(sum==3)
printf("-");
}
}
cout<<endl;
}
return 0;
}
D: 478-3279