#11109: 題目計算身份證的公式 是錯的跟著做一定WA


smart70094 (Scorpius)

學校 : 國立雲林科技大學
編號 : 55629
來源 : [118.171.189.79]
最後登入時間 :
2017-01-26 01:39:25
a054. 電話客服中心 -- 板橋高中教學題 | From: [36.232.230.155] | 發表日期 : 2016-06-28 15:48

Java Code

 

import java.util.*;
public class test{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
String str;
while(scanner.hasNext()){
str=scanner.nextLine();
calc(str);
}
}
public static void calc(String str){
int[] data={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 sum=0,t;
int c=Integer.parseInt(str.substring(8,9));
for(int j=0;j<str.length()-1;j++){
sum+=Integer.parseInt(str.substring(j,j+1))*(8-j);
}
for(int i=0;i<data.length;i++){
t=sum+(data[i]%10)*9+(data[i]/10)+c;
if(t%10==0){
System.out.print((char)(i+65));
}
}
System.out.println();
}
}

 
#11160: Re:題目計算身份證的公式 是錯的跟著做一定WA


uopsdod (samcom)

學校 : 不指定學校
編號 : 57407
來源 : [101.15.154.210]
最後登入時間 :
2019-07-14 16:59:15
a054. 電話客服中心 -- 板橋高中教學題 | From: [140.115.236.39] | 發表日期 : 2016-07-11 19:02

Java Code

 

import java.util.*;
public class test{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
String str;
while(scanner.hasNext()){
str=scanner.nextLine();
calc(str);
}
}
public static void calc(String str){
int[] data={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 sum=0,t;
int c=Integer.parseInt(str.substring(8,9));
for(int j=0;j<str.length()-1;j++){
sum+=Integer.parseInt(str.substring(j,j+1))*(8-j);
}
for(int i=0;i<data.length;i++){
t=sum+(data[i]%10)*9+(data[i]/10)+c;
if(t%10==0){
System.out.print((char)(i+65));
}
}
System.out.println();
}
}


真的:
判斷式應該改為
If ((sum[i])  +檢查碼 ) % 10 == 0{ cout << captial[i]... }


 
#11165: Re:題目計算身份證的公式 是錯的跟著做一定WA


iven00000000 (羽音穎次方)

學校 : 國立臺灣科技大學
編號 : 48522
來源 : [61.219.144.211]
最後登入時間 :
2017-10-20 15:22:23
a054. 電話客服中心 -- 板橋高中教學題 | From: [111.243.177.233] | 發表日期 : 2016-07-15 01:32

Java Code

 

import java.util.*;
public class test{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
String str;
while(scanner.hasNext()){
str=scanner.nextLine();
calc(str);
}
}
public static void calc(String str){
int[] data={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 sum=0,t;
int c=Integer.parseInt(str.substring(8,9));
for(int j=0;j<str.length()-1;j++){
sum+=Integer.parseInt(str.substring(j,j+1))*(8-j);
}
for(int i=0;i<data.length;i++){
t=sum+(data[i]%10)*9+(data[i]/10)+c;
if(t%10==0){
System.out.print((char)(i+65));
}
}
System.out.println();
}
}


真的:
判斷式應該改為
If ((sum[i])  +檢查碼 ) % 10 == 0{ cout << captial[i]... }


可以參考a020的公式

 
ZeroJudge Forum