Я новичок в C++, и я начал изучать его в университете несколько месяцев назад. У меня есть домашняя работа, чтобы напечатать индекс числа фибоначчи (если он есть) или напечатать 0 (если это не так). Но fibonacci немного отличается. F(n) = aF(n-1) + bF(n-2)
. Где a и b даны на входе. Так я продолжая вход:
1 1 (те, а и б)
4 (длина чисел вводится)
13 14 9 5 (точные цифры)
. В этом случае это регулярная последовательность фибоначчи. Так что нужно напечатать:
7 (FIB (7) = 13)
0 (14 не является числом FIB)
0 (9 не является числом FIB)
5 (FIB (5) = 5)
Получить индекс числовой номер фибоначчи
ограничения являются:
а, б подсчет чисел и каждый номер должен быть в диапазоне [0, 1 миллион]
я сделал вывод. Он действительно печатает мне индексы, но без 0. Только 7 и 5. Вот мой код:
#include <iostream>
#include <vector>
using namespace std;
int a,b;
int fib(int n)
{
if (n <= 1)
return n;
return a*fib(n-1) + b*fib(n-2);
}
int main()
{
int length;
vector<int> v;
int number;
while (cin >> a >> b >> length)
{
for (int i = 0; i < length; i++)
{
cin >> number;
v.push_back(number);
}
for (int i = 0; i < v.size(); i++)
{
for (int j = 0; j <= 30; j++) // 30 is max because 31 is beyond 1.000.000
{
if (v[i] == fib(j))
{
cout << j << endl;
}
}
}
v.clear();
}
return 0;
}
Как распечатать 0s там?
Вы должны провести некоторое исследование чисел Фибоначчи. Существует замкнутая формула для номера nn Фибоначчи. Другими словами, вы просто вставляете 'n', и он сразу выплевывает ответ. Вы могли бы использовать это, чтобы помочь с вашим решением. –