2015年6月26日 星期五

資處程式 6/26 甄選(第1題及第2題)

第1題:身份證檢查-1
    N組輸入,每一組一行,為身份證的前9碼,最後少一碼為檢查碼,請輸出n行,各1數字為「檢查碼」
  範例:T11266383
身份證第1碼:英文代號以下表轉換成數字
      A=10 台北市     G=16 宜蘭縣     M=21 南投縣     S=26 高雄縣     Y=31 陽明山
      B=11 台中市     H=17 桃園縣     N=22 彰化縣     T=27 屏東縣     Z=33 連江縣
      C=12 基隆市     I=34 嘉義市*    O=35 新竹市*    U=28 花蓮縣
      D=13 台南市     J=18 新竹縣     P=23 雲林縣     V=29 台東縣
      E=14 高雄市     K=19 苗栗縣     Q=24 嘉義縣     W=32 金門縣*
      F=15 台北縣     L=20 台中縣     R=25 台南縣     X=30 澎湖縣
T轉成27 則和 sum = 2*1 + 7*9 接著8個數字各乘8~1 { 1*8+1*7+2*6+6*5+6*4+3*3+8*2+3*1}
所以 sum = 2*1 + 7*9 + 1*8+1*7+2*6+6*5+6*4+3*3+8*2+3*1 = 174 ,檢查碼即 sum10的餘數 6

第2題:身份證檢查-2
 身份證的驗證規則與第1題同,但所輸入的資料少了第1碼英文字,請問有哪幾個英文字可能是對的
 範例:112663836sum = a*1+b*9 + 1*8+1*7+2*6+6*5+6*4+3*3+8*2+3*1+6 sum會被10整除
   (a+9b+115) 若代入27a=2,b=7 sum=180是對的,則T可以
    又若代入G(16)1+6*9+115 = 170亦可   ,也就是 a分別以1、2、3代入試即可得出


參考解答:
' 第1題 身份證檢查-1 ,少最後1碼(檢查碼),請算出檢查碼
 Dim 英to數() = {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,32}
 Dim line() = Split(TextBox1.Text, vbNewLine)
 Dim n As Integer = Val(line(0))
 For i = 1 To n
    Label1.Text &= vbCrLf
    Dim pid As String = line(i)
    Dim num = 英to數(Asc(pid) - 65)  '第1個字,查 英to數()陣列 A->10 , B->11 ... Z->32
    Dim sum = (num \ 10) + (num Mod 10) * 9
    For j = 2 To 9
      sum += (Asc(Mid(pid, j, 1)) - 48) * (10 - j)
    Next j
    Label1.Text &= (10 - sum Mod 10)
Next i
---------第1題 資料---
5
T11266383   Ans: 6
M12345678   Ans: 9
Y12345678   Ans: 8
A22334455   Ans: 3
R10234567   Ans: 8

' 第2題 身份證檢查-2 ,少了第1碼(英文字),請算出可能的英文字母
  Dim 數to英 As String = "ABCDEFGHJKLMNPQRSTUVXYWZIO"
  Dim line() = Split(TextBox1.Text, vbNewLine)
  Dim n As Integer = Val(line(0))
  For i = 1 To n
    Label1.Text &= vbCrLf
    Dim pid As String = line(i)
    For a = 1 To 3
      Dim sum = a
      For j = 1 To 8
        sum += (Asc(Mid(pid, j, 1)) - 48) * (9 - j)
      Next j
      sum += Asc(Mid(pid, 9, 1)) - 48
      Dim ans = a * 10 + sum Mod 10 - 9
      If ans <= 35 Then Label1.Text &= Mid(數to英, ans, 1)
    Next a
  Next i
---------第2題 資料---
5
112663836   Ans: GT
108881111   Ans: GT
123456788   Ans: KLY
223344556   Ans: DQO
102345678   Ans: ER

Related Posts:

  • P1 選修C 的三個Prime程式除了以下這三個之外還有兩個範例,明日(1/17)會加入 第一個prime-1.cpp 輸入一個數 n 判斷是否為質數 #include <iostream> using namespace std; int main() {   int n , i ;   &nbs… Read More
  • Z2-vb-筆試3-解題說明 Read More
  • P1選 C 另二個範例gcd.cpp 求最大公因數 /* 輸入 {a,b} > 0  計算 a,b 的最大公因數 */ #include <iostream> using namespace std; int main() {   int a,b;   while ( … Read More
  • P2A練習02/05P2A 2015/02/05練習:讀入n個數,問數字相同的個數最多幾個? 以下為第(2)種方法的程式碼,另附測試檔 a.txt b.txt c.txt  a共110個數字{有5個5} 、  b共10000個數字{有6個100}、 c共10000個數字{有8個98765432} … Read More
  • 國中 C++ 心想數字考題方式(一) 卡片的製作:   如果有6張卡,已完成5張卡,保證選完6張一定可以猜出心中所想的數字 (0~63之一)   請完成第6張卡的內容 (二) 猜出心想數字:   依所列出的6張卡,選出心中所想的數字 (0~63之一)在哪幾張卡內沒有   請問心中所想的數字是? … Read More

0 意見:

張貼留言