2174:身份证校验码

时间限制:2 S   /  内存限制:65536 KB
AC:78   /  Submit:189
问题描述

18位身份证的最后一位是校验码,校验码根据前17位数字经过如下几步骤计算得到。

第一步:将身份证号码的第1位数字与7相乘;将身份证号码的第2位数字与9相乘;将身份证号码的第3位数字与10相乘;将身份证号码的第4位数字与5相乘;将身份证号码的第5位数字与8相乘;将身份证号码的第6位数字与4相乘;将身份证号码的第7位数字与2相乘;将身份证号码的第8位数字与1相乘;将身份证号码的第9位数字与6相乘;将身份证号码的第10位数字与3相乘;将身份证号码的第11位数字与7相乘;将身份证号码的第12位数字与9相乘;将身份证号码的第13位数字与10相乘;将身份证号码的第14位数字与5相乘;将身份证号码的第15位数字与8相乘;将身份证号码的第16位数字与4相乘;将身份证号码的第17位数字与2相乘。
第二步:将第一步身份证号码1~17位相乘的结果求和,全部加起来。
第三步:用第二步计算出来的结果除以11,这样就会出现余数为0,余数为1,余数为2,余数为3,余数为4,余数为5,余数为6,余数为7,余数为8,余数为9,余数为10共11种可能性。
第四步:如果余数为0,那对应的最后一位身份证的号码为1;如果余数为1,那对应的最后一位身份证的号码为0;如果余数为2,那对应的最后一位身份证的号码为X(大写字母);如果余数为3,那对应的最后一位身份证的号码为9;如果余数为4,那对应的最后一位身份证的号码为8;如果余数为5,那对应的最后一位身份证的号码为7;如果余数为6,那对应的最后一位身份证的号码为6;如果余数为7,那对应的最后一位身份证的号码为5;如果余数为8,那对应的最后一位身份证的号码为4;如果余数为9,那对应的最后一位身份证的号码为3;如果余数为10,那对应的最后一位身份证的号码为2。

现在有一个身份证号,如果校验码是正确的,那么输出Yes,否则输出正确的身份证号。

输入描述

一个正整数n,表示有n组案例。

每组案例由一个18位的字符串组成。

输出描述

针对每组案例,如果身份证校验码是正确的,则输出Yes;否则输出一个字符串,是校验码修改成正确的身份证号。

每组案例输出后都要换行。

样例输入复制样例

2

432831196411150810

432831196411150811

样例输出

Yes

432831196411150810

相关

18-19(2)第1次线上赛

Test for kids 20190413


Copyright 2016 - 2024 XUJC ACM Team
闽ICP备2020022076号-1