一个符合要求的人员ID号由十七位数字本体码和一位数字校验码组成。校验码的工作原理如下所示: 一开始要对前十七位数字分配权重之后再求和,权重的分配情况为:
{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}
然后将计算的和对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
如果计算出的Z和M对不上,说明ID号有问题。
现在给定一些ID号,请你验证校验码并对不正确的ID号进行操作: 如果ID号的前17位均为数字,则请输出正确的ID号; 如果前17位不全为数字,则将输入的ID号输出后再额外输出error。
输入
输入第一行给出正整数N(≤100)是输入的人员ID号的个数。随后N行,每行给出1个18位人员ID号。
输出
如果所有号码都正常,则输出All passed。 如果有号码不正常,若号码前17位均为数字,则输出正确的ID号,否则直接输出错误的ID号+error
样例
标准输入 复制文本 |
4 320124198808240056 12010X198901011234 110108196711301866 37070419881216001X |
标准输出 复制文本 |
12010X198901011234error 110108196711301862 370704198812160012 |
标准输入 复制文本 |
2 320124198808240056 110108196711301862 |
标准输出 复制文本 |
All passed |