APCS202206 第2題字串解碼
zerojudge:https://zerojudge.tw/ShowProblem?problemid=i400
作業上傳:http://203.68.236.9/problem/c0101
出處APCS
給由m個 01 字串的加密表和按照順序加密原字串後得到加密過後的字串,請嘗試還原出原本的字串。
輸入說明
第一行輸入兩個數字 m,n (1≤m,n≤100),接下來有 m個長度為 n的 01 字串,最後輸入一個長度為 n的加密字串, 字串均由大寫字母組成。
輸出說明
輸出解密後的字串。
輸入範例
1 5
10110
CABAD
3 6
111110
101101
000000
RETYWQ
輸出範例
BCAAD
QWERTY
範例測資二過程如下
e = 111110, 1出現的數量為奇數次,因此需要將字串 "QWERTY" 切半翻轉成 "RTYQWE",經過 01 字串的轉換後會得到 "EWQYTR"。
e = 101101, 1出現的數量為偶數次,因此不用翻轉字串,經過 01 字串的轉換後會得到 "RETYWQ"。
e = 000000, 1出現的數量為偶數次,因此不用翻轉字串,經過 01 字串的轉換後會得到 "RETYWQ"。
解題策略
字串串接與切割,解密由後往前,先由數值0與1還原字串,接著由1的個數決定是否前後互換,可以獲得原來字串,再進行下一個還原,直到執行m次,求出解答。
C++程式碼
Python程式碼(使用ChatGPT轉換成Python)