Автор: | Антон Карабанов | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 256 Мб | |
Выходной файл: | Стандартный выход | |||
Максимальный балл: | 100 |
Алгоритм Луна — алгоритм вычисления контрольной цифры номера пластиковой карты в соответствии со стандартом ISO/IEC 7812. Не является криптографическим средством, а предназначен в первую очередь для выявления ошибок, вызванных непреднамеренным искажением данных (например, при ручном вводе номера карты). Позволяет лишь с некоторой степенью достоверности судить об отсутствии ошибок в блоке цифр, но не даёт возможности нахождения и исправления обнаруженной неточности.
Алгоритм разработан сотрудником фирмы IBM Хансом Питером Луном, описан в США в 1954 году, патент получен в 1960 году.
В настоящее время алгоритм является публичным достоянием. Рассмотрим его упрощённую версию.
По данному шестнадцатизначному числу n, определите, может ли оно являться корректным номером банковской карты?
Единственная строка входных данных содержит одно натуральное шестнадцатизначное число n.
Обратите внимание, что при заданных ограничениях для хранения данных необходимо использовать 64-битный тип данных, например long long в C++, int64 в Free Pascal, long в Java.
Выведите Yes
или No
— ответ на вопрос задачи.
1015 ≤ n ≤ 1016 − 1
Баллы за каждый тест начисляются независимо.
В примере дано n = 4561261212345464
Первая цифра 4 стоит на нечётной позиции. Удваиваем её: 4 × 2 = 8. Результат не превышает 9.
Вторая цифра 5 стоит на чётной позиции. Не изменяем её.
Третья цифра 6 стоит на нечётной позиции. Удваиваем её: 6 × 2 = 12. Результат превышает 9, складываем цифры двузначного числа: 1 + 2 = 3.
Четвёртая цифра 1 стоит на чётной позиции. Не изменяем её.
...
Шестнадцатая цифра 4 стоит на чётной позиции. Не изменяем её.
Складываем все получившиеся цифры: 8 + 5 + 3 + 1 + 4 + 6 + 2 + 2 + 2 + 2 + 6 + 4 + 1 + 4 + 3 + 4 = 57. Сумма не кратна 10.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|