#ZS3T3. 防沉迷(idcard)
防沉迷(idcard)
题面描述
身份证号码作为独一无二代表公民信息的号码,它的组成是由一下的数字表示的:
(1)第 位数字表示:所在省(直辖市、自治区)的代码;
(2)第 位数字表示:所在地级市(自治州)的代码;
(3)第 位数字表示:所在区(县、自治县、县级市)的代码;
(4)第 位数字表示:出生年、月、日;
(5)第 位数字表示:所在地的派出所的代码;
(6)第 位数字表示性别:奇数表示男性,偶数表示女性;
(7)第 位数字是校检码:是根据《中华人民共和国国家标准 》中有关公民身份号码的规定,根据精密的计算公式计算出来的。
身份证校验码的计算方法:
1、将前面的身份证号码 位数分别乘以不同的系数。从第一位到第十七位的系数分别为:。
2、将这 位数字和系数相乘的结果相加。
3、用加出来和除以 ,看余数即为最后一位的校验码。
4、余数只可能有 这 个数字。其分别对应的最后一位身份证的号码为 。
现在我们给定一些身份证号,要你判断这些身份证号码是否可以通过防沉迷验证,我们将年龄视为未成年人(本题中的年龄定义为 出生年份的值),根据条例未成年游戏时需要受到时间限制,现在要你编写一个程序来检验他们输入的身份证是否合法且能通过防沉迷验证。
注意:判断合法性仅需考虑出生年月日以及最后一位校验码。
输入格式
从文件idcard.in中读入数据。
第一行输入一个整数 代表有 组测试数据。
接下来 行,每行都输入一个 位的身份证号码。
输出格式
输出到文件idcard.out中。
如果可以通过防沉迷验证输出 ,如果无法通过输出 ,如果身份证号输入的是错误的,输出 。
5
350302196603156642
350302187009196591
350302201605091268
350302187600112162
350302200002301314
Pass
Pass
Too Young
Error
Error
样例 1 解释
对于第一、二个数据,年龄与身份证校验码均通过,如果你看到了第二个数据的出生年份,年龄为 岁(有点离谱,但符合题目条件,能通过防沉迷验证),故输出 。
对于第三个数据,身份校验码通过,但年龄不符合,故输出 。
对于第四个数据,由于 年不存在 月,故输出 。
对于第五个数据, 年 月不存在 号,故输出 。
数据规模与约定
对于 % 的数据保证:,且输入的身份证号码保证都为数字且均为 位 。
相关
在下列比赛中: