1. 题目:
小蓝有一个保险箱,保险箱上共有 n 位数字。
小蓝可以任意调整保险箱上的每个数字,每一次操作可以将其中一位增加 1 或减少 1 。
当某位原本为 9 或 0 时可能会向前(左边)进位/退位,当最高位(左边第 一位)上的数字变化时向前的进位或退位忽略。
例如:
00000 的第 5 位减 1 变为 99999 ;
99999 的第 5 位减 1 变为 99998 ;
00000 的第 4 位减 1 变为 99990 ;
97993 的第 4 位加 1 变为 98003 ;
99909 的第 3 位加 1 变为 00009 。
保险箱上一开始有一个数字 x,小蓝希望把它变成 y,这样才能打开它,问 小蓝最少需要操作的次数。
输入格式
输入的第一行包含一个整数 n 。
第二行包含一个 n 位整数 x 。
第三行包含一个 n 位整数 y 。
输出格式
输出一行包含一个整数表示答案。
样例输入
5
12349
54321
样例输出
11
2. 错误版本:
n = int(input())
list_x = [5] + [int(digit) for digit in input()]
list_y = [5] + [int(digit) for digit in input()]
result = 0
for i in range(1, n + 1):
x = list_x[-i]
y = list_y[-i]
if y < x:
up = 10 - x + y
down = x - y
if up < down:
list_x[-i - 1] += 1
k = 1
while list_x[-i - k] >= 10:
list_x[-i - k] -= 10
k += 1
list_x[-i - k] += 1
result += up
else:
result += down
else:
up = y - x
down = 10 - y + x
if up > down:
list_x[-i - 1] -= 1
k = 1
while list_x[-i - k] < 0:
list_x[-i - k] += 10
k += 1
list_x[-i - k] -= 1
result += down
else:
result += up
print(result)
3. 新版:
小结:
关注我给大家分享更多有趣的知识,以下是个人公众号,提供 ||代码兼职|| ||代码问题求解||
添加我的公众号即可: