Найти в Дзене

Задача 271. Числа Фибоначчи - 2

Задача, обратная к Задача 147. Числа Фибоначчи, но решается почти тем же кодом. Условие:

Условие задачи с сайта acmp.ru
Условие задачи с сайта acmp.ru

На первый взгляд пугающее здесь то, что входные данные могут быть больше миллиарда. И столько итераций в простом цикле точно не успеет отработать за секунду.

Однако, это ограничение на предположительное число Фибоначчи, а не его номер. И если позапускать код из задачи Задача 147. Числа Фибоначчи, то можно понять, что уже 46-ое число Фибоначчи превышает данное ограничение. То есть цикл, который будет итеративно вычислять числа Фибоначчи (и сравнивать с введённым числом) выполнится не более 46 раз, что очень быстро.

Для начала надо считать входные данные:

Считываем входные данные
Считываем входные данные

А дальше запустим код, который последовательно вычисляет числа Фибоначчи. Почти то же самое, что и в прошлой задаче. Только заменим цикл for на while, так как здесь нам надо остановиться не через заданное число итераций, по условию достижения нужного значения. Поэтому и число итераций в переменной i надо считать самостоятельно:

Вычисление чисел Фибоначчи
Вычисление чисел Фибоначчи

После выхода из цикла, в a будет лежать число Фибоначчи, а в i - его номер, причём a будет не меньше n. И для вывода ответа надо лишь проверить на равенство:

Вывод ответа
Вывод ответа

Это работает, потому что числа вычислялись последовательно, и перескочить n (если бы оно было числом Фибоначчи) мы не смогли, и ровно на n цикл закончился бы.

Предыдущий выпуск: Задача 327. В одном шаге от счастья

Я очень хочу, чтобы мои советы были полезны вам, а для того, чтобы быстрее всех получать новые статьи можно подписаться на мой канал.

Наука
7 млн интересуются