Кредитні картки
Limits: 2 sec., 256 MiB
Чи знали ви, що не всі номери кредитних карток є валідними? Для того, щоб уникнути хоча б частини помилок при введенні номерів кредитних карток, номери повинні задовільняти алгоритм Луна. Алгоритм Луна — це проста формула перевірки контрольної суми, котру використовують для валідації різноманітних ідентифікаційних номерів. Алгоритм працює наступним чином:
Дано певне додатнє число.
Помножимо кожну цифру на непарній позиції на 2 (тобто першу, третю і т.д.) і замінимо початкові цифри на ці результати. Якщо в результаті множення вийшло двоцифрове число, то впишемо обидві ці цифри.
Додамо разом усі цифри з числа, яке вийшло.
Якщо результат ділиться на 10 без остачі, то число з кроку 1 вважається валідним, в протилежному випадку це число не валідне.
Давайте глянемо як цей алгоритм працює на наступному прикладі:
Дано число 126789.
126789 \(\to\) 1\(\cdot\)2|2|6\(\cdot\)2|7|8\(\cdot\)2|9 \(\to\) 2|2|12|7|16|9 \(\to\) 22127169.
2+2+1+2+7+1+6+9 = 30.
30 ділиться на 10, а отже число 126789 валідне.
Зеник працює над валідатором номерів кредиток мастеркард для одного волонтерського фонду, проте в його код закрався баг і він просить вас написати таку ж програму. Вам буде дано номер кредитної карти і вам потрібно перевірити чи:
Цей номер є валідним згідно алгоритму Луна.
Цей номер має префікс
51
,52
,53
,54
або55
.
Якщо обидві умови виконано, це валідний номер кредитки мастеркард. Сподіваємось, що ви кращий програміст ніж Зеник.
Input
Єдиний рядок містить номер кредитної картки мастеркард — рівно 16 цифр без пробілів.
Output
Якщо заданий номер задовільняє алгоритм Луна і має коректний префікс,
виведіть слово VALID
. Інакше, виведіть слово
BAD
.
Samples
Input (stdin) | Output (stdout) |
---|---|
5555555555554443 | BAD |
Input (stdin) | Output (stdout) |
---|---|
8888888888888888 | BAD |
Input (stdin) | Output (stdout) |
---|---|
5375411203491563 | VALID |
Input (stdin) | Output (stdout) |
---|---|
5168742063537207 | VALID |
Input (stdin) | Output (stdout) |
---|---|
5169330524195689 | VALID |
Input (stdin) | Output (stdout) |
---|---|
5168745606525191 | VALID |
Notes
Перший приклад не задовільняє алгоритм Луна.
Другий приклад задовільняє алгоритм Луна, проте не має корректного префіксу.
Долучайся до збору від Algotester на дрони для аеророзвідки за номером картки у прикладі 3!
Картки в прикладах 4-6 це картки фондів Сергія Притули, Мир і Ко, та Армія SOS. Кожна з цих організацій допомагає ЗСУ і ми будемо вдячні вам за донати цим організаціям :)
Submit a solution
Element Type | Created | Who | Problem | Compiler | Result | Time (sec.) | Memory (MiB) | # | Actions |
---|
Element Type | Created | Who | Problem | Compiler | Result | Time (sec.) | Memory (MiB) | # | Actions |
---|