Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 1693 Solved: 433
[Submit][Status]
Peter在手机上打字时一直用全键键盘来输入,但最近不知道怎么搞的,把全键键盘弄丢了,只剩下了9键键盘。一项喜欢高科技的Peter却不会用9键键盘打字。So,please help him!
9键键盘如上图所示。如果要输入字母'A',我们只需要按一次数字键2;如果要输入空格,则需要按数字键0;如果要输入字母'B'的话,我们需要连续按两次数字键2,按键序列为22。如果要输入的两个大写字母都在同一个数字键上,则需要按数字1作为分隔符,例如输入字母’JL’,需要先按一次数字键5,再按一次数字键1,再按3次数字键5,按键序列为51555。
为了使问题简化,我们假设Peter要输入的内容只有大写英文字母和空格。
输入有多组测试用例。每组测试用例占一行,为Peter要输入的内容,不超过20000个字符。
对于每组测试用例,输出一行,为得到所有内容所要按下的按键序列。
#include
#include
#include
#include
#include
int
main(){
char
**p;
p=(
char
**)
malloc
(10*
sizeof
(
char
*));
*(p+1)=
"1..."
;
*(p+2)=
"ABC."
;
*(p+3)=
"DEF."
;
*(p+4)=
"GHI."
;
*(p+5)=
"JKL."
;
*(p+6)=
"MNO."
;
*(p+7)=
"PQRS"
;
*(p+8)=
"TUV."
;
*(p+9)=
"WXYZ"
;
*p=
" ..."
;
char
a[30000]={0};
while
(
gets
(a)!=NULL){
int
len=
strlen
(a),i,j,k,flag=0,l;
for
(i=0;i<
strlen
(a);i++)
for
(j=0;j<10;j++)
for
(k=0;k<4;k++)
if
(a[i]==*(*(p+j)+k)){
if
(j==0);
else
if
(j==flag)
printf
(
"1"
);
for
(l=0;l<=k;l++){
printf
(
"%d"
,j);
flag=j;
}
}
printf
(
"\n"
);
}
return
0;
}