Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Решите задачу python

Кирилл Шарапанов Ученик (118), открыт 1 неделю назад
Последовательность Фибоначчи определяется так:

φ0=0,φ1=1,φn=φn−1+φn−2
Дано натуральное число A
. Определите, каким по счету числом Фибоначчи оно является, то есть выведите такое число n
, что φn=A
. Если A
не является числом Фибоначчи, выведите число −1
.

Входные данные

Вводится натуральное число A
(2⩽A⩽2⋅109
).

Выходные данные

Выведите ответ на задачу.
3 ответа
Михаил Сальков Ученик (141) 1 неделю назад
def fibonacci_index(A):
φ0, φ1 = 0, 1
n = 1

while φ1 <= A:
if φ1 == A:
return n
φ0, φ1 = φ1, φ0 + φ1
n += 1

return -1

# Пример ввода:
A = int(input())
print(fibonacci_index(A))
Михаил СальковУченик (141) 1 неделю назад
Пример работы алгоритма:
Если, например,
A
=
21
:

φ
0
=
0
,
φ
1
=
1
φ
2
=
1
φ
3
=
2
φ
4
=
3
φ
5
=
5
φ
6
=
8
φ
7
=
13
φ
8
=
21
→ найдено:
n
=
8
.
Если
A
=
22
:

Мы будем вычислять далее, и как только
φ
9
=
34
(превышает 22), мы выведем

1
потому что 22 не является числом Фибоначчи.
Таким образом, программа корректно определяет индекс числа Фибоначчи или возвращает -1, если число не является таковым.
Вертолётов 625 Мудрец (13315) Михаил Сальков, Да не может твой ии ничего нормально написать. Только место и время зря потрачено.
Вертолётов 625 Мудрец (13315) 1 неделю назад
Код:
 def find_fibonacci_index(A): 
if A == 0:
return 0
elif A == 1:
return 1

a, b = 0, 1
index = 1

while b < A:
a, b = b, a + b
index += 1

if b == A:
return index
else:
return -1

# Ввод данных
A = int(input())

# Вычисление и вывод результата
result = find_fibonacci_index(A)
print(result)
Похожие вопросы