#include #include // 文字列処理のヘッダファイル #define M 1024 // テストケースの最大の長さ #define N 10 // 携帯のボタンの数 int main(void) { char str[M + 1] = ""; // テストケースを読み込む文字列 // 携帯のボタンの割り当て char button[][6] = {"", // 0(空文字列、使用しない) ".,!? ", // 1 "abc", // 2 "def", // 3 "ghi", // 4 "jkl", // 5 "mno", // 6 "pqrs", // 7 "tuv", // 8 "wxyz", // 9 }; int button_len[N] = {0}; // 各ボタンの文字列の長さ int num; // テストケースの数 int str_len; // テストケースの文字列の長さ char temp; // 連続する数字 int cnt; // 数字が連続した回数 int i, j; // ループ変数 // 各ボタンの文字列の長さを計算 for(i = 0; i < N; i++) button_len[i] = strlen(button[i]); // テストケースの数の読み込み scanf("%d", &num); // 各テストケースに対する処理 for(i = 0; i < num; i++){ scanf("%s", str); // テストケースの数字列の読み込み str_len = strlen(str); // テストケースの数字列の長さを計算 for(j = 0, temp = str[0]; j < str_len; temp = str[j]){ cnt = 0; // カウントを0に更新 // 同じ数字がいくつ連続しているかを調べる while(temp == str[++j]) cnt++; // 連続していた数字が0でなければ対応する文字を表示 if(temp != '0') printf("%c", button[temp - '0'][cnt % button_len[temp - '0']]); } // 改行 putchar('\n'); } return (0); }