【題解】APCS1070610-1 特殊編碼

【題目敘述】http://judge.epass2u.com/problem/APCS1070610-1
【類似題】ZeroJudge e283: APCS 類似題 – 小崴的特殊編碼
【解題想法】

  • 將由0和1組成的四位數字(二進位)轉換成十進位數字,當作陣列的下標,即可速查對應的字元。
#include <iostream>
#include <cstring>
using namespace std;

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    int n;
    cin >> n;
    char letter[16];
    memset(letter, '\0', sizeof(letter));
    letter[5] = 'A';
    letter[7] = 'B';
    letter[2] = 'C';
    letter[13] = 'D';
    letter[8] = 'E';
    letter[12] = 'F';
    for (int i=0; i<n; i++){
        int x = 0, tmp;
        for (int j=0; j<4; j++){
            cin >> tmp;
            x = 2 * x + tmp;
        }
        cout << letter[x];
    }
    cout << '\n';
    return 0;
}

Python code (credit: Amy Chou)

letter = [' ' for _ in range(16)]
letter[5] = 'A';
letter[7] = 'B';
letter[2] = 'C';
letter[13] = 'D';
letter[8] = 'E';
letter[12] = 'F';

n = int(input())
for _ in range(n):
    tmp = list(map(int, input().split()))
    x = 0
    for t in tmp:
        x = 2 * x + t;
    print(letter[x], end='')
print()
分享本文 Share with friends