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)