2020年3月1日 星期日

[zerojudge]a020. 身分證檢驗

a020. 身分證檢驗

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

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

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

程式碼如下:

  1. /* a020. 身份證檢驗
  2. *
  3. *
  4. * 2020/3/1
  5. */
  6.  
  7. import java.util.Scanner;
  8.  
  9. public class Pa020{
  10.  
  11. public static void main(String[] args){
  12. Scanner scanner = new Scanner(System.in);
  13.  
  14. String[] idNum = {"10", "11", "12", "13", "14", "15", "16", "17", "34",
  15. "18", "19", "20", "21", "22", "35", "23", "24", "25",
  16. "26", "27", "28", "29", "32", "30", "31", "33"};
  17.  
  18. int[] num = {1, 9, 8, 7, 6, 5, 4, 3, 2, 1, 1};
  19.  
  20. while(scanner.hasNext()){
  21. String input = scanner.nextLine();
  22. input = idNum[Character.getNumericValue(input.charAt(0)) - Character.getNumericValue('A')] + input.substring(1);
  23.  
  24. int sum = 0;
  25.  
  26. for(int i = 0; i < input.length(); i++){
  27. sum += num[i] * Character.getNumericValue(input.charAt(i));
  28. }
  29.  
  30. System.out.println(sum % 10 == 0 ? "real": "fake");
  31. }
  32. }
  33. }

沒有留言:

張貼留言