30 баллов, пожалуйста решите в питоне задачку
Номер числа Фибоначчи
Последовательность Фибоначчи определяется так:
ϕ0=0,ϕ1=1,ϕn=ϕn−1+ϕn−2
Дано натуральное число A. Определите, каким по счету числом Фибоначчи оно является, то есть выведите такое число n, что ϕn=A. Если A не является числом Фибоначчи, выведите число −1.
Входные данные
Вводится натуральное число A (2≤A≤2∗109).
Выходные данные
Выведите ответ на задачу с использованием цикла while, а не for!!!!
Примеры
Ввод Вывод
8_______10
6_______-1
Answers & Comments
Программа:
Python:
A = int(input())
if A == 0:
print(0)
else:
f0, f1 = 0, 1
tmp = 1
while f1 <= A:
if f1 == A:
print(tmp)
break
f0, f1 = f1, f0 + f1
tmp += 1
else:
print(-1)
Объяснение:
В начале вводится натуральное число А. Сразу идёт проверка: если число равно нулю, то выводится ноль. Иначе начинается основной код: переменной f0 присваивается 0, переменной f1 единица, переменной index также единица. Теперь с помощью цикла while выполняем тело цикла до тех пор, пока f1 ≤ A. Идёт проверка на то, равняется ли f1 переменной А. Если да, то выводится значение переменной index и цикл останавливается. Всегда значению f0 присваивается значение f1, переменной f1 - сумма f0 и f1. Увеличивается значение переменной index на 1: в этой переменной как раз таки и хранится номер по счёту в последовательности Фибоначчи.
Результат:
8
6
10
-1
233
13