Что нужно знать:
Во-первых, счастливые числа.
Счастливые числа генерируются так:
Возьмите все натуральные числа:
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
безопасно.
Удалить каждый третий номер:
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
.