Задача, обратная к Задача 147. Числа Фибоначчи, но решается почти тем же кодом. Условие:
На первый взгляд пугающее здесь то, что входные данные могут быть больше миллиарда. И столько итераций в простом цикле точно не успеет отработать за секунду.
Однако, это ограничение на предположительное число Фибоначчи, а не его номер. И если позапускать код из задачи Задача 147. Числа Фибоначчи, то можно понять, что уже 46-ое число Фибоначчи превышает данное ограничение. То есть цикл, который будет итеративно вычислять числа Фибоначчи (и сравнивать с введённым числом) выполнится не более 46 раз, что очень быстро.
Для начала надо считать входные данные:
А дальше запустим код, который последовательно вычисляет числа Фибоначчи. Почти то же самое, что и в прошлой задаче. Только заменим цикл for на while, так как здесь нам надо остановиться не через заданное число итераций, по условию достижения нужного значения. Поэтому и число итераций в переменной i надо считать самостоятельно:
После выхода из цикла, в a будет лежать число Фибоначчи, а в i - его номер, причём a будет не меньше n. И для вывода ответа надо лишь проверить на равенство:
Это работает, потому что числа вычислялись последовательно, и перескочить n (если бы оно было числом Фибоначчи) мы не смогли, и ровно на n цикл закончился бы.
Предыдущий выпуск: Задача 327. В одном шаге от счастья
Я очень хочу, чтобы мои советы были полезны вам, а для того, чтобы быстрее всех получать новые статьи можно подписаться на мой канал.