#2165. 查身份证
查身份证
No testdata at current.
题目描述
一个合法的身份证号码由前 位数字本体码和最后 位校验码组成。
校验码的计算规则如下:
先对前 位数字分别乘上对应的权值,再求和。权值从左到右依次为:
设求得的和为 ,令:
然后根据下表确定校验码 :
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 0 | X | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
现在给定若干个身份证号码,请你检查它们的校验码是否有效,并输出所有有问题的号码。
注意:
- 这里只检查前 位是否全部为数字,以及最后 位校验码是否正确;
- 不检查前 位所代表的地区、日期等信息是否合法。
如果所有号码都正确,则输出 All passed。
输入格式
从标准输入按以下格式读取数据:
第 个身份证号码
第 个身份证号码
第 个身份证号码
其中:
- 第一行输入一个整数 ,表示待检查的身份证号码个数。
- 接下来 行,每行输入一个长度为 的身份证号码。
输出格式
按照输入顺序,逐行输出所有有问题的身份证号码。
如果所有号码都正确,则输出一行:
All passed
样例
4
320124198808240056
12010X198901011234
110108196711301866
37070419881216001X
12010X198901011234
110108196711301866
37070419881216001X
2
320124198808240056
110108196711301862
All passed
样例解释
对于第一组样例:
12010X198901011234的前 位中包含非数字字符,因此有问题;110108196711301866与37070419881216001X的校验码不正确,因此也有问题。
对于第二组样例,两个身份证号码都合法,因此输出 All passed。
数据范围
- 每个身份证号码长度均为