Що потрібно знати:
По-перше, щасливі числа.
Щасливі номери генеруються так:
Візьміть усі натуральні числа:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20...
Потім видаліть кожне друге число.
1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39...
Тепер, 3
в безпеці.
Видалити кожен 3-й номер:
1, 3, 7, 9, 13, 15, 19, 21, 25, 27, 31, 33, 37, 39, 43, 45, 49, 51, 55, 59...
Тепер, 7
в безпеці.
Видаліть кожен 7-й номер.
Продовжуйте та видаляйте кожне n
число, де n
є першим безпечним числом після усунення.
Остаточний список безпечних номерів - це щасливі номери.
Нещасливі числа складаються з окремих списків чисел, які є [U1, U2, U3... Un]
.
U1
це перший набір номерів, вилучених із щасливих "кандидатів", тож вони:
2, 4, 6, 8, 10, 12, 14, 16, 18, 20...
U2
видалено другий набір номерів:
5, 11, 17, 23, 29, 35, 41, 47, 53, 59...
І так далі і так далі ( U3
третій список, U4
четвертий і т.д.)
Виклик:
Ваше завдання полягає в тому, щоб отримати два входи m
і n
згенерувати m
число у списку Un
.
Приклади входів і виходів:
(5, 2) -> 29
(10, 1) -> 20
Технічні характеристики:
- Ваша програма повинна працювати
m
до1e6
таn
до100
.- Вам гарантовано, що обидва
m
іn
є додатними цілими числами. - Якщо вам цікаво,
U(1e6, 100)
=5,333,213,163
. (Дякую @pacholik!)
- Вам гарантовано, що обидва
- Ваша програма повинна обчислити це протягом 1 дня на розумному сучасному комп’ютері.
Це код-гольф , тому найкоротший код у байтах виграє!
PS: Було б добре, якби хтось придумав загальну формулу їх створення. Якщо у вас є формула, будь ласка, вкажіть її у своїй відповіді!
(1e6,1e6)
?
n=1
випадку? Оскільки це особливо - для всіх інших випадків, індекс наступного щасливого числа на основі 0 n-1
.