AOJ_2006 Keitai Message
問題
略
解法
携帯電話のボタンごとの文字の割り当てを配列にしておくとやりやすい。
実装
#include <cstdio> #include <cstring> using namespace std; char c[10][6] = { "", ".,!? ", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz", }; int buf[1024]; void mes(int len){ char message[77]; int m_len = 0; for(int i = 0; i < len; i++){ if(buf[i] == 0) continue; int j = 0; for(; buf[i + j] != 0; j++){ ; } int mod = strlen(&c[buf[i]][0]); message[m_len] = c[buf[i]][(j-1) % mod]; m_len++; i += j; } message[m_len] = 0; printf("%s\n", message); } int main(){ int n; char t; scanf("%d", &n); scanf("%c", &t); for(int i = 0; i < n; i++){ int j = 0; while(scanf("%c", &t) && '0' <= t && t <= '9'){ buf[j] = t - '0'; j++; } mes(j); } return 0; }