南郵OJ 1174 G小Kのラブレター


G小Kのラブレター
時間制限(通常/Java):
1000 MS/3000 MS運転メモリ制限:65536 KByte
総提出:558試験合格:72
試合の説明
今Kさんはメールで彼女に告白する必要があります.指で一つ一つ入力すると疲れます.そこでKさんはあなたを見つけて、優秀なプログラマーが、携帯電話のキーボード入力をシミュレートするためにプログラムを書いてあげました.
T 9入力方式は携帯電話でよく使われる入力方式である.26文字の英語のアルファベットが上図のように並んでいる.例えば、アルファベットBを入力するときは、2回押す必要があります.同じボタンに連続的に入力するアルファベットが必要な場合は、停止する必要があります.引用符を除くスペース'(引用符を除く)で代用する.例えば、私たちがAAを入力するときは、2.連続入力22はアルファベットBを表す.
入力
入力1行目にはN(1次のN行は、各行がKの入力する情報である.文字列の長さは1000を超えません.
しゅつりょく
各行入力に対して、出力に対応
「Case#x:」にメッセージ対応のキーボード入力を接続する.
サンプル入力
4 hi yes foo  bar hello world
サンプル出力
Case #1: 44 444 Case #2: 999337777 Case #3: 333666 6660 022 2777 Case #4: 4433555 555666096667775553
ヒント
 
テーマソース
NUAA_馮晋文
#include<iostream>
#include<string>
#include<map>
using namespace std;

int main(){
	int n,caseNo,i,len;
	string s;
	map<char,string> csMap;
	csMap.insert(make_pair(' ',"0"));
	csMap.insert(make_pair('a',"2"));
	csMap.insert(make_pair('b',"22"));
	csMap.insert(make_pair('c',"222"));
	csMap.insert(make_pair('d',"3"));
	csMap.insert(make_pair('e',"33"));
	csMap.insert(make_pair('f',"333"));
	csMap.insert(make_pair('g',"4"));
	csMap.insert(make_pair('h',"44"));
	csMap.insert(make_pair('i',"444"));
	csMap.insert(make_pair('j',"5"));
	csMap.insert(make_pair('k',"55"));
	csMap.insert(make_pair('l',"555"));
	csMap.insert(make_pair('m',"6"));
	csMap.insert(make_pair('n',"66"));
	csMap.insert(make_pair('o',"666"));
	csMap.insert(make_pair('p',"7"));
	csMap.insert(make_pair('q',"77"));
	csMap.insert(make_pair('r',"777"));
	csMap.insert(make_pair('s',"7777"));
	csMap.insert(make_pair('t',"8"));
	csMap.insert(make_pair('u',"88"));
	csMap.insert(make_pair('v',"888"));
	csMap.insert(make_pair('w',"9"));
	csMap.insert(make_pair('x',"99"));
	csMap.insert(make_pair('y',"999"));
	csMap.insert(make_pair('z',"9999"));
	cin>>n;
	getchar();
	for(caseNo=1; caseNo<=n; caseNo++){
		getline(cin,s);
		len = (int)s.length();
		cout<<"Case #"<<caseNo<<": "<<csMap[s[0]];
		for(i=1;i<len;i++){
			if(csMap[s[i-1]][ csMap[s[i-1]].length()-1 ] == csMap[s[i]][0]){
				cout<<' ';
			}
			cout<<csMap[s[i]];
		}
		cout<<endl;
	}
}