私はC++の新人です。数ヶ月前に大学で学び始めました。 私はフィボナッチ数(もしあれば)のインデックスを印刷するか、または0をプリントするという宿題を持っています。しかし、フィボナッチは少し違っています。 F(n) = aF(n-1) + bF(n-2)
。 aとbは入力から与えられます。私は入力に連続しています:
1(ものであり、b)は、
4は
13 14 9 5(正確な数)
(入力された数字の長さです)。この場合、これは通常のフィボナッチ配列です。それは印刷しなければならない:
7(FIB(7)= 13)
0(14 FIB番号ではない)
0(9 FIB番号ではない)
5(FIB(5)= 5)
フィボナッチ数のインデックスを取得
制約がある:番号10000
<及び各番号の
、B カウント値が範囲内にあるべきである[0、1000000]
Iが出力を行いました。それは本当に私にインデックスを印刷しますが、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;
}
ここに0を印刷するにはどうすればよいですか?
フィボナッチ数についていくつかの調査を行う必要があります。フィボナッチ数のn番目の式は閉じられています。言い換えれば、あなたは単に 'n'を差し込み、すぐに答えを吐き出します。これを使用してソリューションに役立つかもしれません。 –