有一個字串加密系統,對於一個長度為 n 的字串 S 和一個長度為 n 01 字串 e,會產生一個加密過後的字串 T,其中加密流程為以下兩個步驟:
1. 如果字串 e 中 1 的出現次數是偶數,則直接進第二步驟,出現次數是奇數則將字串 S 平分成兩等份,兩份順序交換後再接起來,如果字串長度是奇數,則最中間的字元不動位置。
2. 讓 i 從 1 到 n 迭代,如果 e[i]=0 就將 S 的第一個字元切掉並接到字串 T 的最後一個字元,如果 e[i]=1 就將 S 的最後一個字元切掉並接到字串 T 的最後一個字元。
以範例 1 為例,e 陣列為 10110,其中 1 出現的次數為奇數,因此需要交換字串 S 從 BCAAD 變為 ADABC。接下來執行第二階段,其中過程如下。
給由 m 個 01 字串的加密表和按照順序加密原字串後得到加密過後的字串,請嘗試還原出原本的字串。
第一行輸入兩個數字 m, n (1≤m,n≤100),接下來有 m 個長度為 n 的 01 字串,最後輸入一個長度為 n 的加密字串, 字串均由大寫字母組成。
子題配分
輸出解密後的字串。
1 5 10110 CABAD
BCAAD
3 6 111110 101101 000000 RETYWQ
QWERTY
範例測資一,如題目所述
範例測資二過程如下
e = 111110,1 出現的數量為奇數次,因此需要將字串 "QWERTY" 切半翻轉成 "RTYQWE",經過 01 字串的轉換後會得到 "EWQYTR"。
e = 101101,1 出現的數量為偶數次,因此不用翻轉字串,經過 01 字串的轉換後會得到 "RETYWQ"。
e = 000000,1 出現的數量為偶數自,因此不用翻轉字串,經過 01 字串的轉換後會得到 "RETYWQ"。
編號 | 身分 | 題目 | 主題 | 人氣 | 發表日期 |
沒有發現任何「解題報告」 |