НУЖНО СРОЧНО НА С++, ТАКИЕ ЗАДАЧИ ЕСТЬ НА ПИТОНЕ, НО НУЖЕН С++
С ПОМОЩЬЮ ЦИКЛА 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
Answers & Comments
Ответ:
Код на 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;
}
Объяснение:
{
cin >> A;
} while (A < 0 || A > 2 * pow(10, 9));
цикл do...while проверяет число, является ли оно в нашей области (если больше, чем 2*10^9, то вводим его опять, и если меньше чем 0). Защита от дурака, проще говоря