免費開始練習
司法三等申論題 110年 [檢察事務官電子資訊組] 程式語言

第 四 題

四、中華民國的身分證字號共有 10 個字元,其編碼原則如下:第一個字元為大寫的英文字母,代表出生地區,其餘 9 個字元皆為數字。在套用編碼原則時,第一個大寫英文字母須先依下表轉換為數字: 字母 A B C D E F G H I J K L M 數字 10 11 12 13 14 15 16 17 34 18 19 20 21 字母 N O P Q R S T U V W X Y Z 數字 22 35 23 24 25 26 27 28 29 32 30 31 33 轉換後的身分證字號共有 11 位數字,每一位數字均有固定的權重(Weight),由左往右依序為 1, 9, 8, 7, 6, 5, 4, 3, 2, 1, 1。判斷身分證字號是否正確的方法為:各位數字與其相對應的權重相乘後再加總,加總後的結果若為 10 的倍數,則該身分證字號即屬有效。請使用 C/C++、Java 或 Python 任一程式語言撰寫一支中華民國身分證字號的驗證程式。例如所輸入的身分證字號為「A123456789」,則輸出應為「A123456789 為有效的身分證字號」;所輸入的身分證字號為「Z987654321」,則輸出應為「Z987654321 為無效的身分證字號」。(25 分)
📝 此題為申論題

思路引導 VIP

本題測試基礎字串處理與演算法邏輯實作。考生看到題目應先想到利用「陣列查表法(Lookup Table)」將不規則的英文字母映射至對應數字,接著利用字元 ASCII 碼的特性(如 ch - 'A')作為陣列索引進行 O(1) 取值,最後透過迴圈完成權重加總計算與模除(Modulo)驗證。

🤖
AI 詳解 AI 專屬家教

【破題】 本題核心在於「字元與數值的轉換」及「加權總和(Weighted Sum)的計算」。實作上最有效率的解法是運用「查表法(Lookup Table)」來處理不連續的字母編碼,並配合 ASCII 碼特性進行位移索引。 【程式碼實作】

▼ 還有更多解析內容

升級 VIP 解鎖