b753. P31以身分證投票之檢查
標籤 : 字串處理 迴圈 陣列
通過比率 : 342人/382人 ( 90% ) [非即時]
評分方式:
Tolerant

最近更新 : 2015-12-24 11:32

內容

101年正式題術科 Problem 3:檢查碼問題 子題 1:身分證

中華民國身分證的號碼是經由一串公式所產生出來的,其身分證字號共有十碼,包括第一個大寫的英文字母與接續的九個阿拉伯數字。

(1)第一個碼代表地區,轉換方式為:A 轉換成1,0 兩個字元,B 轉換成1,1,餘如下:

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

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

(2)第二個碼代表性別,1 代表男性,2 代表女性

(3)第三個碼到第九個字元為流水號碼。

(4)第十個碼為檢查號碼。

例如:A123456789,其A 的轉換字元是1 和0,其餘各碼亦轉換成字元,依序存在 n1n2n3n4n5n6n7n8n9n10n11 的變數中,如右:然後再把每一個變數,依序乘上 1 9 8 7 6 5 4 3 2 1 及 1 的加權,再相加,如下:

1

0

1

2

3

4

5

6

7

8

9

n1

n2

n3

n4

n5

n6

n7

n8

n9

n10

n11

n1×1+n2×9+n3×8+n4×7+n5×6+n6×5+n7×4+n8×3+n9×2+n10×1+n11×1

將身分證號碼 A123456789 套入公式,其結果為:

1x1 + 0x9 + 1x8 + 2x7 + 3x6 + 4x5 + 5x4 + 6x3 + 7x2 + 8x1 + 9x1 = 130

然後再除以 10,如果整除,該組身分證字號為有效。

假設今天有個活動,可以以有效的身分證字號進行投票,不限制本人使用,一個有效的身分證字號只能投票一次。請寫一支程式統計(1)有效的身分證字號和(2)有效的身分證字號但重複及(3)無效的身分證字號的個數。

每行的身分證字號將會為三種可能情況之一:

(1)有效的身分證字號:T

(2)有效的身分證字號但重複:O(有效的身分證字號第二次(含)之後再出現都列入重複)

(3)無效的身分證字號:F

分別計算T、O、F 的個數,並依序輸出其值。

例如在第一組測試資料中,有 8 筆資料:

  1. M123456789(T) 2. A123456789(T) 3. A323456783(F)          4. M123456789(O)
  2. M123456789(O) 6. M123456789(O) 7. A123456789(O)          8. A223344556(F)

例如在第二組測試資料中,有 4 筆資料:

  1. R102345678 (T)、 2. A108881111(F) 、 3. A108881111(F) 、   4. B101111111(T)
輸入說明

每一個測資檔可能有多組資料,以範例輸入為例,第一組8筆、第二組4組,EOF結束

 第 1 行的數字n 代表有幾筆測試資料,而n 的值介於3 和10 之間,之後每行為每個測試身分證字號。在測試資料中A323456783,套入公式,其身分證的驗證碼結果雖然正確,在第二個碼代表性別(1 代表男性,2 代表女性) ,因其為3,所以為無效的身分證字號。

輸出說明

每一組測資輸出一列,一個測資檔有可能多組。

每行輸出T,O,F 的個數值,對應到每組測試資料中的(1)有效的身分證字號、(2)有效的身分證字號但重複及(3)無效的身分證字號的個數,結果以”,”分開。

範例輸入 #1
8
M123456789
A123456789
A323456783
M123456789
M123456789
M123456789
A123456789
A223344556
4
R102345678
A108881111
A108881111
B101111111
範例輸出 #1
2,4,2
2,0,2
測資資訊:
記憶體限制: 64 MB
提示 :
標籤:
字串處理 迴圈 陣列
出處:
101學年度商業類程式設計競賽正式題 [管理者: p3a_owhj (阿普二信) ]

本題狀況 本題討論 排行

編號 身分 題目 主題 人氣 發表日期
20339 yes51851823@ ... (wseds) b753
1412 2020-01-08 19:02