f023. 字母排序問題
標籤 :
通過比率 : 1人/1人 ( 100% ) [非即時]
評分方式:
Tolerant

最近更新 : 2025-04-21 09:56

內容

請用 A 到 Z 的順序排序 N 個(N ≤ 10,000,000)大寫英文字母,並輸出排序後在指定位置的英文字母。

輸入說明

輸入資料有三行,第一行有兩個用空格分開的數字,代表有幾個字母要被排序(N)和幾個要輸出的字母(M)。第二行為 N 個要被排序的大寫英文字母。第三行為 M 個以空格分開的數字,每一個數字都小於等於 N,代表要輸出的英文字母的位置(位置 1 為排序後的第一個英文字母)。請注意第三行中的數字有可能重複。

輸出說明

輸出資料只有一行,含有共 M(1 ≤ M ≤ 10)個大寫英文字母。

範例輸入 #1
20 4
KFGHTHZHJKGXAKMCNHTE
5 1 15 3
範例輸出 #1
GAME
範例輸入 #2
15 9
XOMWSMNQLOAENTO
3 9 12 1 3 1 5 9 12
範例輸出 #2
LOSALAMOS
測資資訊:
記憶體限制: 64 MB
公開 測資點#0 (20%): 1.0s , <1K
公開 測資點#1 (20%): 1.0s , <1K
公開 測資點#2 (20%): 1.0s , <1K
公開 測資點#3 (20%): 1.0s , <1K
公開 測資點#4 (20%): 1.0s , <1K
提示 :

我們可以使用一維陣列(假設叫 table)來記錄每個字母的出現次數。
table[0] 是字母 A 的出現次數,table[1] 是字母 B 的出現次數 ...,以此類
推。
在輸出排序後指定位置的字母時,我們需要透過累加 table 中的值來確定
「在這個位置之前,已經出現了多少個字母」,從而推算出該位置屬於哪
個字母。
假設 A 出現了 3 次,B 出現了 2 次,C 出現了 4 次,而我們要輸出第 6 個
位置,那麼 C 就是我們要的答案 (3+2+4 ≥ 6)。

標籤:
出處:
2019 資訊學科能力競賽 新北區複賽 [管理者: franklin(管理員) ]


編號 身分 題目 主題 人氣 發表日期
沒有發現任何「解題報告」