C/C++

Номер числа Фибоначчи C++

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

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

Входные данные:
Вводится натуральное число A

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

Примеры
Ввод Вывод
8 6
10 -1

Написал вот такой код, но не проходит тесты, в чем проблема?

#include <iostream>
using namespace std;
int main() {
int fib1, fib2, z, x, aba;
cin >> x;
fib1 = 1;
fib2 = 0;
z = 0;
while (z != 10000) {
int fib_sum = fib1 + fib2;
fib1 = fib2;
fib2 = fib_sum;
z = z + 1;
if (fib_sum == x) {
cout << z;
aba = 1;
}
}
if (aba == 0) {
cout << "-1";
}
}
Федя Дичь
Федя Дичь
144
Ваш код не проходит тесты, потому что переменная aba не инициализирована. Поэтому, если число Фибоначчи не найдено, то программа может вывести неправильный результат. Чтобы исправить эту проблему, вы можете инициализировать переменную aba значением 0 перед циклом while. Вот исправленный код:
 #include   
using namespace std;
int main() {
int fib1, fib2, z, x, aba;
cin >> x;
fib1 = 1;
fib2 = 0;
z = 0;
aba = 0; // Инициализация переменной aba
while (z != 10000) {
int fib_sum = fib1 + fib2;
fib1 = fib2;
fib2 = fib_sum;
z = z + 1;
if (fib_sum == x) {
cout
Светлана Яцушкевич
Светлана Яцушкевич
25 860
Лучший ответ
Федя Дичь Спасибо за помощь!
Нужно узнать, какой номер у числа 1 (оно входит в последовательность дважды), и включается ли 0 в числа Фиббоначчи.
Для 0 программа выводит -1, но по нумерации задания, видимо, он должен быть под номером 0.
И с размерностью типа - тоже непонятки. Числа Фиббоначчи растут очень быстро, 127-е число не влезет в 64-битный тип, а твой int закончится где-то на 46-м. Какое максимальное число могут ввести?
И 10 тыс итераций здесь - ни к селу, ни к городу.
В общем, вот, расширил тип, учёл 0, и причесал немного код:
 #include 
using namespace std;
int main() {
unsigned long long x;
cin >> x;
unsigned long long fib1 = 1;
unsigned long long fib2 = 0;
unsigned long long fib_sum = 0;
int z = -1;
while (fib2
Dmitry Galyamov
Dmitry Galyamov
54 053
Четыре