C/C++

Напишете на c++

Номер числа Фибоначчи
Последовательность Фибоначчи определяется так:

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

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

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

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

Выведите ответ на задачу.

Примеры
Ввод
8
10
Вывод
6
-1
Код на C++:

#include

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;

}
ВП
Виктор Порожняк
460
Лучший ответ
Константин Ерощенков неправильно ( код блок говорит есть ошибки
Тут лучше сразу сделать массив из чисел Фибоначчи, а потом можно проверять сколько надо раз число А при разных его значениях (0≤А≤2⁶⁴-1=18446744073709551615). Число 1 в массив будет входить два раза.
#include <iostream>
using namespace std;
int main() { int m, n;
unsigned long long A, f[97];
f[0] = 0; f[1] = 1; for (n = 2; n < 97; n++)
f[n] = f[n - 1] + f[n - 2]; while (true)
{ m = 1; cin >> A; if (A == 0) cout << 0;
else if (A == 1) cout << "1 2"; else
{ for (n = 3; n < 97; n++) { if (A == f[n])
{ m = 0; cout << n; break; } }
if (m) cout << "-1"; } cout << endl << endl; } }
Морозов Андрей
Морозов Андрей
66 572
#include < iostream >
using namespace std;

int fib(int x)
{
if (!x) return 0;
if (x == 1) return 1;
return fib(x - 1) + fib(x - 2);
}

int main()
{
int a;
cin >> a;
if (a < 2 || a > 218) { cout << "Out of range"; return 0; }
for (int i = 0; i < 13; i++)
if (a == fib(i)) {
cout << i; return 0;
}
cout << "Non fibonacha";
}
Я питонист
Юрий Бердников Отлично чувак, а может скажешь теперь откуда у тебя в очке боинг?
Иван Синибабнов Очнись ты же мазелов