Предмет: Информатика, автор: nichka1408

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

Ответы

Автор ответа: vimmortal2
2

Программа:

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

Интересные вопросы
Предмет: Математика, автор: Карабин1
Предмет: Алгебра, автор: lepkav