Текст задачи:
Последовательность Фибоначчи определяется так:
φ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";
}
}
C/C++
Номер числа Фибоначчи C++
Ваш код не проходит тесты, потому что переменная 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
Федя Дичь
Спасибо за помощь!
Нужно узнать, какой номер у числа 1 (оно входит в последовательность дважды), и включается ли 0 в числа Фиббоначчи.
Для 0 программа выводит -1, но по нумерации задания, видимо, он должен быть под номером 0.
И с размерностью типа - тоже непонятки. Числа Фиббоначчи растут очень быстро, 127-е число не влезет в 64-битный тип, а твой int закончится где-то на 46-м. Какое максимальное число могут ввести?
И 10 тыс итераций здесь - ни к селу, ни к городу.
В общем, вот, расширил тип, учёл 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
Четыре
Похожие вопросы
- С++ сириус Номер числа Фибоначчи
- Задача "Числа Фибоначчи"
- Число Хэмминга C++
- Как написать функцию которая вычисляет арктангенс из любого числа на c++ без использования библиотек
- Сделать перестановку чисел с помощью функции в C++, но у меня получается чепуха
- C++ Выведите в порядке возрастания все простые числа на отрезке [l;r]. Оформите решение в виде функции bool
- Как сделать проверку на число типо если кто то ввел не число то будет чтото выводить на экран c++
- Тема по Си. Последовательность Фибоначчи.
- C++. Бинарный поиск. Объясните работу данной программы. Найдите такое число x, что , с точностью не менее 6 зн.С while
- Вывод нечетных номеров, а затем четных в C, помогите пожалуйста