Информатика. ЕГЭ
Задания для подготовки
Задачи разных лет из реальных экзаменов, демо-вариантов, сборников задач и других источников
Задание 5. Информатика. ЕГЭ. Поляков-5445
- Просмотры: 507
- Изменено: 12 апреля 2025
(В. Шубинкин) Автомат производит первичную проверку правильности номера банковской карты. Он получает на вход число \(N\) из \(16\) цифр и обрабатывает его по следующему правилу (вариант алгоритма Лу́на):
- Цифры числа нумеруются справа налево, начиная с нуля.
- Цифры, стоящие на нечётных позициях, увеличиваются в два раза. Если при этом получается двузначное число, его цифры складываются.
- Складываются все цифры на чётных позициях и преобразованные цифры на нечётных позициях.
- Если полученная сумма кратна \(10,\) считается, что номер корректный.
Например, для числа \(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\)
Обсуждение задания
Здесь пока нет ни одного комментария. Будьте первым!


