Информатика, вопрос задал viktorfedotov334 , 2 года назад

НУЖНО СРОЧНО НА С++, ТАКИЕ ЗАДАЧИ ЕСТЬ НА ПИТОНЕ, НО НУЖЕН С++
С ПОМОЩЬЮ ЦИКЛА WHILE И IF/ELSE, НИКАКИХ МАССИВОВ И ЦИКЛОВ FOR
Номер числа Фибоначчи
Последовательность Фибоначчи определяется так:

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

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

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

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

Выведите ответ на задачу.
Ввод
8
Вывод
6
Ввод
10
Вывод
-1

Ответы на вопрос

Ответил Jason785
1

Ответ:

Код на C++:

#include <iostream>

using namespace std;

int main()

{

   setlocale(LC_ALL, "rus");

   int f1 = 0;

   int f2 = 1;

   int f3 = 1;

   int A, count = 0;

   do

   {

       cin >> A;

   } while (A < 2 || A > 2 * pow(10, 9));

       

   while (true)

   {

       count++;

       if (f3 == A)

       {

           cout << count << endl;

           break;

       }

       else if (f3 != A && f3 > A)

       {

           cout << -1 << endl;

           break;

       }

       f3 = f1 + f2;

       f1 = f2;

       f2 = f3;

   };

   

   return 0;

}

Объяснение:

Приложения:

viktorfedotov334: о опять ты бро)
viktorfedotov334: правда у тебя два ретурна ноль ну ок
viktorfedotov334: do

{

cin >> A;

} while (A < 0 || A > 2 * pow(10, 9));
viktorfedotov334: а зачем это нужно?
Jason785: Вводится натуральное число A (2≤A≤2∗109)
цикл do...while проверяет число, является ли оно в нашей области (если больше, чем 2*10^9, то вводим его опять, и если меньше чем 0). Защита от дурака, проще говоря
Jason785: я исправил некоторые ошибки
Новые вопросы