已结束 GESP欢乐赛 #11

A1504 | 身份证验证

来源官方 / 2023
时间限制1s
内存限制128MB
通过 / 提交0/0

题目描述

你需要实现一个身份证合法性校验程序:

一个合法的身份证包含17位数字+1位校验码,校验码的计算规则如下:

首先对前17位数字加权求和,权重分配为:$[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]$

假如身份证号为:114514...

那么这个身份证的权值为:$1\times 7 + 1 \times 9 + 4\times 10 + 5 \times 5 ......$

然后将计算的权值对11取模得到值Z;最后按照以下关系对应Z值与校验码M的值:

```
Z:0 1 2 3 4 5 6 7 8 9 10
M:1 0 X 9 8 7 6 5 4 3 2
```

下面给出一个身份证,请判断它的合法性。

输入格式

输入一个长度为 $18$ 的待验证字符串。

输出格式

若该字符串是身份证号,输出 Yes,否则输出 No

输入输出样例

输入 #1
12010X198901011234
输出 #1
No
输入 #2
320124198808240056
输出 #2
Yes
输入 #3
litiansuo1145141919X
输出 #3
No
C++ 编辑器
输入
输出