Вы, наверное, слышали о числах Фибоначчи. Вы знаете, что целочисленная последовательность начинается с 1, 1
, а затем каждое новое число является суммой двух последних?
1 1 2 3 5 8 13...
И так далее. Проблемы с числами Фибоначчи довольно популярны здесь . Но кто сказал, что числа Фибоначчи должны начинаться с 1, 1
? Почему они не могли начать с 0, 1
? Хорошо, давайте переопределим их, чтобы начать с 0:
0 1 1 2 3 5 8 13...
Но ... Мы не должны останавливаться на достигнутом! Если мы можем добавить последние два числа, чтобы получить следующее, мы могли бы также вычесть первое число из второго числа, чтобы добавить новый номер. Так что это может начаться с 1, 0
:
1 0 1 1 2 3 5 8 13...
Мы можем даже получить негативы:
-1 1 0 1 1 2 3 5 8 13...
И эта серия также продолжается вечно. Я думаю, что интересно, как это в конечном итоге отражает обычные числа Фибоначчи, просто с каждым другим числом, сделанным отрицательным:
13 -8 5 -3 2 -1 1 0 1 1 2 3 5 8 13...
Давайте назовем эту серию «Расширенное число Фибоначчи», или EFN . Поскольку на самом деле не существует очевидного отрицательного числа, с которого начинается этот ряд, мы скажем, что 0 отображается в 0 , регулярные числа Фибоначчи распространяются на положительные индексы, а отрицательные (полуотрицательные?) Числа Фибоначчи расширяются по отрицательным показателям, вот так:
Indices: ...-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 ...
Values: ...13 -8 5 -3 2 -1 1 0 1 1 2 3 5 8 13...
Это приводит к сегодняшнему вызову:
Учитывая целое число N , вернуть каждый индекс, по которому N появляется в ряду EFN .
Несколько случайных наблюдений по этой задаче:
1 появляется несколько раз в EFN , чем любое другое число:
[-1, 1, 2]
. Ни один номер не появится более чем в 3 местах.Каждое число Фибоначчи> 1 будет отображаться либо один раз (3, 8, 21 и т. Д.), Либо дважды (2, 5, 13 и т. Д.)
Пояснения к правилу:
- Если
abs(N)
это не число Фибоначчи, оно никогда не появится в серии EFN , поэтому вы должны вывести ничего / пустую коллекцию, если это возможно, или, если это невозможно на вашем языке, вы можете вывести некоторое постоянное нечисловое значение. - Если N появляется в нескольких местах в EFN , ваш вывод не нужно сортировать. Хотя каждый индекс должен появляться ровно один раз.
- Хотя большинство задач последовательности позволяют вам выбрать, хотите ли вы использовать индексацию на основе 1 или 0, для этой задачи необходимо использовать описанную индексацию (где 0 отображается в 0).
- Вы можете осуществлять ввод-вывод в любом стандартном формате.
Тестовые случаи
-13: []
-12: []
-11: []
-10: []
-9: []
-8: [-6]
-7: []
-6: []
-5: []
-4: []
-3: [-4]
-2: []
-1: [-2]
0: 0
1: [-1, 1, 2]
2: [-3, 3]
3: [4]
4: []
5: [-5, 5]
6: []
7: []
8: [6]
9: []
10: []
11: []
12: []
13: [-7, 7]
И несколько больших тестовых случаев:
89: [-11, 11]
1836311903: [46]
10000: []
-39088169: [-38]
Как обычно, кратчайший ответ в байтах побеждает!