图书都有唯一的ISBN码(书号)标识,ISBN分为10位和13位两种。对于10位的ISBN码,包含9位数字和1位校验码,其格式如“a-bcd-efghi-j”,其中符号“-”是分隔符,字母a,b,……,i代表0,1,……,9中的某位数字,最后一位是校验码(可以为0,1,……,9中的某位数字,也可以是大写字母X)。
对于格式为“a-bcd-efghi-j”的书号,校验码的计算方法如下(参考自百度百科):
将去掉校验码后得到的9位数字依序分别乘以从10,9,8,……,3,2,将其乘积相加得到累加和sum,求余数r=sum%11;若r=0,则校验码为0;否则求11与r的差数d=11-r,若d=10,则以“X”来表示校验码,否则校验码为d。即:
sum=a×10+b×9+c×8+d×7+e×6+f×5+g×4+h×3+i×2,r=sum % 11,若r为0,则校验码为0,否则d=11-r,若d=10,则校验码为大写字母X,否则校验码为d。
例如,对于书号:7-302-56474-4,有
sum=7×10+3×9+0×8+2×7+5×6+6×5+4×4+7×3+4×2=216,r=216 % 11=7,d=11-7=4,因此校验码为4。
请判断输入书号中的校验码是否正确,若正确,则输出“OK”,否则输出更新校验码后的正确书号。
输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。对于每组测试数据,输入一个字符串代表书号,格式为“a-bcd-efghi-j”。
输出格式:
对于每组测试数据,输出一行,若书号的校验码正确,则输出“OK”,否则输出更新校验码后的正确书号,格式为“a-bcd-efghi-j”。引号不必输出。
输入样例:
1 | 2 |
输出样例:
1 | OK |
解题思路:
使用默认的swap函数交换两个字符串。
代码:
1 | C++ |