第3題子題 2:編碼
在 ASCII CODE 中,每個字元需要使用 8 bit 來存資料。當檔案只包含0123456789AB 十二種字元時,可二進制重新編碼以節省空間,假設新編碼如下表:
二進制 |
字元 |
00 |
A |
01 |
B |
100 |
0 |
101 |
1 |
1100 |
2 |
1101 |
3 |
11100 |
4 |
11101 |
5 |
111100 |
6 |
111101 |
7 |
111110 |
8 |
111111 |
9 |
例如編碼 10100110001 對應到的字元為 1A2B。在猜數字的遊戲過程中,會選定不重複的數字排列當做答案,再由玩家來猜數字,再算出幾A 幾B,其遊戲過程可用表3.2.1 的編碼紀錄(答案為何,幾A 幾B 如何算出,不是這次題目考慮的範圍)。例如玩家猜數字6789,算出(0A0B),則把這過程6789 (0A0B)以1111001111011111101111111000010001 編碼,為了讓選手方便對照剛剛的編碼,我們將6789 (0A0B) 編碼拆解成111100 (6) 111101 (7) 111110 (8) 111111(9) 100 (0) 00 (A) 100 (0) 01 (B);若玩家猜數字 1253,算出(2A1B),這過程1253(2A1B)以表3.2.1 的方式編碼紀錄為101 1100 11101 1101 1100 00 101 01(輸入檔案會省略空白,空白的存在是為了方便讀題)
若玩家猜數字 4321,算出(4B),這過程4321 (4B)以表3.2.1 的方式編碼紀錄為11100 1101 1100 101 11100 01
若玩家猜數字5234,算出(3A),這過程5234(3A)以表3.2.1 的方式編碼紀錄為11101 1100 1101 11100 1101 00
若玩家猜數字 1209,算出(2A),這過程1209 (2A)以表3.2.1 的方式編碼紀錄為101 1100 100 111111 1100 00
若玩家猜數字1234,算出(2B),這過程1234 (2B)以表3.2.1 的方式編碼紀錄為101 1100 1101 11100 1100 01
每個測資檔有多組資料,以讀至EOF結束。
每組資料的第 1 行的數字n 代表有幾筆資料要測試,而n 的值介於1 和5 之間,之後每行為0 和1 所組成的編碼字串,字串長度<=34,對應到一次猜數字的遊戲過程。在測試檔案中,每個編碼字串均可正確的對應到編碼表中的編碼。
從第 1 行起每行將輸入之編碼字串,轉成玩家猜的數字及其幾A 幾B 的結果。(輸出英文字均為大寫,選手請注意。數字和其幾A 幾B 的結果以","分開。)
4 1111001111011111101111111000010001 101110011101110111000010101 11100110111001011110001 111011100110111100110100 2 1011100100111111110000 1011100110111100110001
6789,0A0B 1253,2A1B 4321,4B 5234,3A 1209,2A 1234,2B
編號 | 身分 | 題目 | 主題 | 人氣 | 發表日期 |
沒有發現任何「解題報告」
|