(В. Шубинкин) Автомат производит первичную проверку правильности номера банковской карты. Он получает на вход число \(N\) из \(16\) цифр и обрабатывает его по следующему правилу (вариант алгоритма Лу́на):
Например, для числа \(4096~8308~0309~8323\) сумма цифр на чётных позициях (с конца) \(3+3+9+3+8+3+6+0=35,\) сумма преобразованных цифр на нечётных позициях \(4+7+0+0+0+7+9+8=35.\) Общая сумма \(70\) кратна \(10,\) значит номер корректен.
Определите наименьшее число \(N,\) большее \(1234~5678~9101~1121,\) которое может быть корректным номером согласно указанному алгоритму. Укажите в ответе последние \(8\) цифр числа.
Решение:
Python
def conv(x):
d = 2 * int(x)
return d % 10 + d // 10
def lun(n):
ns = str(n)
even = sum(int(x) for x in ns[1::2])
odd = sum(conv(x) for x in ns[::2])
return even + odd
#print(lun(4096830803098323))
for N in range(1234_5678_9101_1121 + 1, 10**16 - 1):
if lun(N) % 10 == 0:
print(N % 10**8)
break
Ответ: \(91011128\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене