题解 | [NOIP2008]ISBN号码

# 开始我用的nums = list(map(int, input().split('-')))
# 后面发现输入的最后一个字符有可能是'X',因此不能直接使用上述语句
# 题目中X等于10,于是当有'X'时我给nums[3]输入10
ori_nums = input().split('-')
nums = []
nums.append(int(ori_nums[0]))
nums.append(int(ori_nums[1]))
nums.append(int(ori_nums[2]))
if ori_nums[3] =='X':
    nums.append(10)
else:
    nums.append(int(ori_nums[3]))
# 输入的X-XXX-XXXXX-X格式前三节我需要提取出9个数字以求验证码
sto_nums = []
sto_nums.append(nums[0])
tmp1 = nums[1]
while tmp1 > 0:
    sto_nums.append(tmp1 % 10)
    tmp1 = tmp1 // 10
tmp2 = nums[2]
while tmp2 > 0:
    sto_nums.append(tmp2 % 10)
    tmp2 = tmp2 // 10
# 因为提取出为倒序所以我需要交换对应的数字
sto_nums[1], sto_nums[3] = sto_nums[3], sto_nums[1]
sto_nums[4], sto_nums[8] = sto_nums[8], sto_nums[4]
sto_nums[5], sto_nums[7] = sto_nums[7], sto_nums[5]
# 求验证码值
veri = 0
i = 1
while i <= 9:
    veri += sto_nums[i - 1] * i
    i += 1
veri = veri % 11
# 判断求得的验证码值与输入的验证码值是否相同
if veri == nums[3]:
    print('Right')
else:
    if veri == 10:
        veri = 'X'
    print(f'{nums[0]}-{nums[1]}-{nums[2]}-{veri}')

全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务