8101 - 身份证校验
时间限制 : 1 秒
内存限制 : 128 MB
我们目前使用的身份证有18位,其中前6位是地址位,中间8位是生日日期位,后面3位是顺序位,最后1位是校验位。
校验身份证号码的方法如下:
1. 首先我们给身份证号码每一位数字分配一个权重。其中从左到右最后一位(第18位)权重是1,每向前一位,权重乘以2,即第一位的权重是2^17(2的17次方)。
2. 我们把号码每一位数字乘以它的权重得到一个乘积,再把一共18个乘积加起来得到一个和。如果这个和除以11的余数是1,那么这个身份证号码就是合法的。(注意最后一位数字可能是大写字母X,计算时当做10)
给定N个身份证号,请你校验是否是合法的身份证号。注意你只需要按上述方法校验,不需要检验诸如生日日期是否合法等。
输入
第一行包含一个整数N(1 <= N <= 10)
以下N行每行一个18位的身份证号。输入保证前17位都是数字,第18位可能数字或者大写字母X。
输出
对于每一个号码,如果校验正确输出YES,否则输出NO
样例
输入
2 53010219200508011X 123456200001010010
输出
YES NO