2020年3月1日 星期日

[zerojudge]a020. 身分證檢驗

a020. 身分證檢驗

請先閱讀:身分證驗證規則

英文代號看似連續,結果參雜一些例外,只好依照英文字母的順序打成字串陣列:( 然後用整數陣列儲存每個編號要乘上的值。
值得提的點應該是Character.getNumericValue(),可以把字元換算成unicode的編碼。

題外話:A123456789是真有其人,被別人盜用的頻率超高,三天兩頭就要跑一次法院,但是這位勇者不換號碼,因為很麻煩。

程式碼如下:

/* a020. 身份證檢驗
*
*
* 2020/3/1
*/

import java.util.Scanner;

public class Pa020{

    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);

        String[] idNum = {"10", "11", "12", "13", "14", "15", "16", "17", "34",
                    "18", "19", "20", "21", "22", "35", "23", "24", "25",
            "26", "27", "28", "29", "32", "30", "31", "33"};  

        int[] num = {1, 9, 8, 7, 6, 5, 4, 3, 2, 1, 1};

        while(scanner.hasNext()){
            String input = scanner.nextLine();
            
            input = idNum[Character.getNumericValue(input.charAt(0)) - Character.getNumericValue('A')] + input.substring(1);

            int sum = 0;

            for(int i = 0; i < input.length(); i++){
                sum += num[i] * Character.getNumericValue(input.charAt(i));
            }

            System.out.println(sum % 10 == 0 ? "real": "fake");
        }
    }
}   

沒有留言:

張貼留言