2023.1.4 PM 03:00 by CBJ
來源 : https://zerojudge.tw/ShowProblem?problemid=e283 出題者 : 2018年6月APCS 標籤 : 建表查表、字串拼接、IO加速 難易度 : 1
解題想法 : 首先利用C++ map或Python dictionary建出一個字串對字串的表(字串index -> 字串value),並分別填入題目定義好的對應關係。 再來只要每輸入一個字串就查出其對應的值並將其拼接,最後一次輸出(較有效率)。 小提醒 : 1. 記得做IO優化 (C++: 詳見程式碼define fastio的定義內容, Python則需從sys套件中引入stdin並使用stdin.readline().rstrip()代替input()使用) 2. C++ getline 輸入中包含空格,所以不能使用cin讀,但由於使用getline之前有先輸入一個n,如果直接使用getline會讀到輸入n時按下的換行字元,因此在讀完n後,必須先呼叫一個getline把他讀掉再來讀正式內容。
//C++ language
#include<iostream>
#include<map>
#define fastio ios_base::sync_with_stdio(false);cin.tie(0)
using namespace std;
map<string,string>mp;
void init(){
mp["0 1 0 1"]="A"; mp["0 1 1 1"]="B"; mp["0 0 1 0"]="C";
mp["1 1 0 1"]="D"; mp["1 0 0 0"]="E"; mp["1 1 0 0"]="F";
}
int main(){
fastio;
init();
int N;
while(cin>>N){
string ans,ignore;
getline(cin,ignore);
while(N--){
string s;
getline(cin,s);
ans+=mp[s];
}
cout<<ans<<"\n";
}
return 0;
}

## Python language
from sys import stdin
d={'0 1 0 1':'A','0 1 1 1':'B','0 0 1 0':'C','1 1 0 1':'D','1 0 0 0':'E','1 1 0 0':'F'}
for read in stdin:
read=int(read)
ans=''
for i in range(read):
s=stdin.readline().rstrip()
ans+=d[s]
print(ans)
