寝癖頭の解法

学習中の覚え書きを投稿、更新していきます。

Aizu Online Judge in C++ #Volume1 - 0127 : Pocket Pager Input

Aizu Online Judge(AOJ)の過去問から、その提出コードの解答例です。

・問題 "Pocket Pager Input"
https://onlinejudge.u-aizu.ac.jp/problems/0127
・ミルクショップ
僕が作成、提出したコードは、以下のとおりです。

・Aizu Online Judge in C++ #Volume1 - 0127 : Pocket Pager Input
/*
Aizu Online Judge in C++ #Volume1 - 0127 : Pocket Pager Input
 https://onlinejudge.u-aizu.ac.jp/problems/0127
 提出コードの解答例
 https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
int main(void){
    string vs[]={"afkpuz","bglqv.","chmrw?","dinsx!","ejoty "};
    string s;
    while(cin>>s){
        ll ss=s.size();
        if(ss%2==1){
            cout<<"NA"<<endl;
            continue;
        }else{
            bool tf=true;
            string ans="";
            for(ll j=0;j<ss-1;j+=2){
                if(!('1'<=s[j+1] && s[j+1]<='5') || !('1'<=s[j] && s[j]<='6')){
                    tf=false;
                    break;
                }
                ans+=vs[s[j+1]-'0'-1][s[j]-'0'-1];
            }
            if(tf){
                cout<<ans<<endl;
            }else{
                cout<<"NA"<<endl;
            }
        }
    }
    return 0;
}

設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/