Последовательности
Вам даны четыре числовые последовательности, пронумерованные до 1
конца 4
.
OEIS Местоположение
0
's, когда натуральные числа перечислены в двоичном виде. Вот пример того, как рассчитать последовательность:0,1,10,11,100,101,110,111 ^ ^ ^^ ^ ^ 0 3 78 10 14
Начало последовательности выглядит так:
0, 3, 7, 8, 10, 14, 19, 20, 21, 23, 24, 27, 29, 31, 36, 37, 40, 45, 51, ...
OEIS Эта последовательность включает в себя первое натуральное число, пропускает следующие два, затем включает следующие три, затем пропускает следующие четыре и продолжает.
0, 3, 4, 5, 10, 11, 12, 13, 14, 21, 22, 23, 24, 25, 26, 27, 36, ...
OEIS Положительные целые числа, где как число
0
's, так и число1
' s в двоичном представлении числа являются степенями2
.2, 4, 5, 6, 9, 10, 12, 16, 23, 27, 29, 30, 33, 34, 36, 39,
OEIS Q последовательность Хофштадтера .
а (1) = а (2) = 1;
a (n) = a (na (n-1)) + a (na (n-2)) для n> 2.1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 6, 8, 8, 8, 10, 9, 10, 11, 11, 12, 12, 12, 12, 16, 14, ...
Мало что строго доказано об этой последовательности, но существует много эмпирических результатов. Один из них особенно важен, и вы можете предположить, что он действителен для всей серии:
В этой статье отмечается, что элементы ряда могут быть сгруппированы в поколения. Если мы нумеруем их, начиная с 1, то k- е поколение содержит ровно 2 k элементов. Соответствующим свойством является то, что все числа в поколении k получаются суммированием двух чисел из поколений k-1. и / или k-2 , но никогда из предыдущих поколений. Вы можете использовать это (и только это) наблюдение, чтобы установить нижнюю границу для оставшихся элементов в последовательности.
Вызов
Ваша задача - напечатать первые x
числа на пересечении заданных входных последовательностей.
Ввод: два числа, разделенные пробелом STDIN
. Первое число представляет собой целое число от 1
до 15
включительно, где каждый бит соответствует последовательности. Самый младший бит соответствует последовательности 1
, а самый старший - последовательности 4
. Второе количество цифр,x
, на которое нужно вывести STDIN
.
Выход: первые x
числа, которые пересекаются с заданными входными последовательностями. Распечатать цифры наSTDOUT
с любым свободным пробелом или пунктуацией в качестве разделителя (пробелы, символы табуляции, новые строки, запятые, двоеточия, точки и т. Д.).
Примеры
1. Напечатайте первые 3
числа в каждой последовательности.
Входные данные: 15 3
Вывод: 10,23,40
2. Напечатайте первые 12
числа в порядковом номере1
и 4
.
Входные данные: 9 12
Вывод: 3,8,10,14,19,20,21,23,24,31,37,40
3. Распечатайте первый10
числа в последовательности 2
.
Входные данные: 2 10
Вывод: 0,3,4,5,10,11,12,13,14,21
4. Напечатайте первые 6
числа в последовательностях 3
и4
.
Входные данные: 12 6
Вывод: 2,4,5,6,9,10
подробности
- Вы можете распечатать вывод на ходу или все сразу в конце.
Огромное спасибо всем, кто помог с этим в чате! Этот вопрос получил большую выгоду от того, чтобы быть в песочнице .
x
?
12 5
примере до одного и того же индекса, то10
действительно ли это будет раньше9
на пересечении ... например, как бы вы, просматривая последовательности, решили, пропустить ли вход9
№3 как возможное пересечение? Например, если бы в нем было № 3,7
вам нужно было бы пропустить его, так как этого нет в № 4