ZeroJudge J010: Code Number

同題:UVa 11946 – Code Number

Adrian 和 Maria 是住在不同城鎮的親戚。 由於他們居住在農村地區,他們很難保持聯繫。 他們發現克服溝通問題的一種方法是通過他們的父母的電話傳信。
關鍵是 Adrian 和 Maria 不想讓他們的父母閱讀他們的信息,他們決定為這些信息創建一個密碼。

代碼不是很複雜,但您應該記住,Adrian 和 Maria 只是孩子。
一般來說,消息的含義是基於用數字改變一些字母。

每條消息由幾行組成,使用英文字母的大寫字母、空格和標點符號:點和逗號。 由數字更改的字母可以在以下範例中看到:

Message in “Code Number”:

H3LL0 MY L0V3, 1 M H499Y 83C4U53 500N 1 W1LL 83 70 Y0UR 51D3.
7H15 71M3 W17H0U7 Y0U H45 833N 373RN4L. 1 1NV173 Y0U 70 7H3 200
0N3 70 533 7H3 238R42 4ND 60R1L45.

Decode Message:

HELLO MY LOVE, I M HAPPY BECAUSE SOON I WILL BE TO YOUR SIDE.
THIS TIME WITHOUT YOU HAS BEEN ETERNAL. I INVITE YOU TO THE ZOO
ONE TO SEE THE ZEBRAS AND GORILAS.

範例測資

範例輸入範例輸出
第一行有一個數字 T (1 ≤ T ≤ 30),代表測試資料數量。
每份測試資料皆有一個空白行分隔,每份測試資料為一條用 Code Number 加密的訊息,1 ≤ 總共行數 ≤ 100,每行不會超過 80 個字符。
對於每組測試資料,請輸出解碼的訊息,每個測試資料之間請空一行。
1
H3LL0 MY L0V3, 1 M H499Y 83C4U53 500N 1 W1LL 83 70 Y0UR 51D3. 7H15
71M3 W17H0U7 Y0U H45 833N 373RN4L. 1 1NV173 Y0U 70 7H3 200 0N3 70
533 7H3 238R45 4ND 60R1L45.
HELLO MY LOVE, I M HAPPY BECAUSE SOON I WILL BE TO YOUR SIDE. THIS
TIME WITHOUT YOU HAS BEEN ETERNAL. I INVITE YOU TO THE ZOO ONE TO
SEE THE ZEBRAS AND GORILAS.
ZeroJudge J010 範例測資

解題思路

使用 while(getline(cin, 字串) && 字串 != “”) 來收每一筆測試資料的字串,當讀到空行就會結束。可以使用 Map 來紀錄每一個數字所對應的英文字母,使用 map<char, string> 的話,只需要判斷 Map[字元] 是否為 “”,如果是 “” 就代表裡面沒有資料就直接輸出目前字元,如果有值的話就輸出對應的英文字母。

範例程式碼-ZeroJudge J010: Code Number

#include <iostream>
#include <map>
using namespace std;

int main() {
    cin.sync_with_stdio(0);
    cin.tie(0);
    map<char, string>MAP;
    MAP['3'] = 'E';
    MAP['0'] = 'O';
    MAP['1'] = 'I';
    MAP['4'] = 'A';
    MAP['9'] = 'P';
    MAP['8'] = 'B';
    MAP['5'] = 'S';
    MAP['7'] = 'T';
    MAP['2'] = 'Z';
    MAP['6'] = 'G';
    int T;
    cin >> T;
    string s;
    getline(cin, s);
    for (int i = 0; i<T; i++) {
        string str;
        while (getline(cin, str) && str != "") {
            for (int j = 0; j<str.length(); j++) {
                if (MAP[str[j]] == "") cout << str[j];
                else cout << MAP[str[j]];
            }
            cout << "\n";
        }
    }
}

//ZeroJudge J010
//Dr. SeanXD

祝最聰明的 Benny 17 歲生日快樂!

發佈留言