Учитывая целое число n
(где n < 10001
) в качестве входных данных, напишите программу, которая будет выводить первые n
числа Улама . Число Улама определяется следующим образом:
- U 1 =
1
, U 2 =2
. - Ибо
n > 2
, U n - это наименьшее целое число, которое больше, чем U n-1, которое является суммой двух различных более ранних членов ровно одним способом.
Например, U 3 - это 3
(2 + 1), U 4 - 4
(3 + 1) (обратите внимание, что (2 + 2) не учитывается, поскольку термины не различаются), а U 5 - 6
(U 5 не равно 5 потому что 5 может быть представлен как 2 + 3 или 4 + 1). Вот первые несколько чисел Улама:
1, 2, 3, 4, 6, 8, 11, 13, 16, 18, 26, 28, 36, 38, 47, 48, 53, 57, 62, 69, 72, 77, 82, 87, 97, 99
Это код гольф, поэтому выигрывает самый короткий вход.
n
мы должны обрабатывать?