新斐波那契数列2019给定正整数 a(a≥1),新斐波那契数列 fa 按如下方式定义: fa (1)=1; fa(2)=a; fa(n)=fa(n−1)+fa(n−2) (n>2)。 例如,给定 a=4,有 f4(1)=1, f4(2)=4, f4(3)=5, f4(4)=9, f4(5)=14, ... 现在已知新斐波那契数列中的一项 x,但并不知道 n 和 a 的值是多少。请你求出所有可能的 n,a(n≥2) 满足 fa(n)=x。
时间: 2023-12-24 16:06:11 浏览: 83
同样的问题,只是 a 变成了 2019。我们可以使用上面的方法解决。下面是 C++ 代码实现:
```
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
int main()
{
int x;
cin >> x;
vector<pair<int, int>> ans;
for (int n = 2; n <= 30; n++) // 枚举 n
{
for (int a = 1; a <= 30; a++) // 枚举 a
{
double phi = (1 + sqrt(5)) / 2;
double psi = (1 - sqrt(5)) / 2;
int f1 = 1;
int f2 = a;
int fn = round(a * pow(phi, n-2) + (x - a * pow(psi, n-2)) / (phi - psi));
// 计算 fn
if (fn == x)
{
ans.push_back(make_pair(n, a));
}
}
}
for (auto p : ans)
{
cout << p.first << " " << p.second << endl;
}
return 0;
}
```
由于数据范围比较小,我们可以直接枚举,时间复杂度为 O(900),可以通过本题。
阅读全文