#ZS3T3. 防沉迷(idcard)

防沉迷(idcard)

题面描述

​ 身份证号码作为独一无二代表公民信息的号码,它的组成是由一下的数字表示的:

​ (1)第 121、2 位数字表示:所在省(直辖市、自治区)的代码;

​ (2)第 343、4 位数字表示:所在地级市(自治州)的代码;

​ (3)第 565、6 位数字表示:所在区(县、自治县、县级市)的代码;

​ (4)第 7147—14 位数字表示:出生年、月、日;

​ (5)第 151615、16 位数字表示:所在地的派出所的代码;

​ (6)第 1717 位数字表示性别:奇数表示男性,偶数表示女性;

​ (7)第 1818 位数字是校检码:是根据《中华人民共和国国家标准GBGB 11643199911643-1999》中有关公民身份号码的规定,根据精密的计算公式计算出来的。

​ 身份证校验码的计算方法:

​ 1、将前面的身份证号码 1717 位数分别乘以不同的系数。从第一位到第十七位的系数分别为:79105842163791058427-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2

​ 2、将这 1717 位数字和系数相乘的结果相加。

​ 3、用加出来和除以 1111 ,看余数即为最后一位的校验码。

​ 4、余数只可能有 0123456789100-1-2-3-4-5-6-7-8-9-101111 个数字。其分别对应的最后一位身份证的号码为 10X987654321-0-X -9-8-7-6-5-4-3-2

​ 现在我们给定一些身份证号,要你判断这些身份证号码是否可以通过防沉迷验证,我们将年龄<18<18视为未成年人(本题中的年龄定义为 20212021 - 出生年份的值),根据条例未成年游戏时需要受到时间限制,现在要你编写一个程序来检验他们输入的身份证是否合法且能通过防沉迷验证。

​ 注意:判断合法性仅需考虑出生年月日以及最后一位校验码。

输入格式

​ 从文件idcard.in中读入数据。

​ 第一行输入一个整数 TT 代表有 TT 组测试数据。

​ 接下来 TT 行,每行都输入一个 1818 位的身份证号码。

输出格式

​ 输出到文件idcard.out中。

​ 如果可以通过防沉迷验证输出 PassPass ,如果无法通过输出 TooToo YoungYoung,如果身份证号输入的是错误的,输出 ErrorError

5
350302196603156642
350302187009196591
350302201605091268
350302187600112162
350302200002301314
Pass
Pass
Too Young
Error
Error

样例 1 解释

​ 对于第一、二个数据,年龄与身份证校验码均通过,如果你看到了第二个数据的出生年份,年龄为 151151 岁(有点离谱,但符合题目条件,能通过防沉迷验证),故输出 PassPass

​ 对于第三个数据,身份校验码通过,但年龄不符合,故输出 TooToo YoungYoung

​ 对于第四个数据,由于 18761876 年不存在 00 月,故输出 ErrorError

​ 对于第五个数据,2000200022 月不存在 3030 号,故输出 ErrorError

数据规模与约定

​ 对于 100100 % 的数据保证:T20T \le 20,且输入的身份证号码保证都为数字且均为 1818 位 。