某種特殊的數列a1, a2, a3, …的定義如下:a1 = 1, a2 = 2, … , an = 2 * an − 1 + an - 2 (n > 2)。
給出任意一個正整數k,求該數列的第k項模以32767的結果是多少?
#include <iostream>
using namespace std;
const int maxn = 32768;
long long dp[maxn] = { 0 };
long long Fabnic(int n)
{
if (n == 1)
{
return 1;
}
if (n == 2)
{
return 2;
}
if (dp[n] != 0)
{
return dp[n];
}
dp[n] = (2 * Fabnic(n - 1) + Fabnic(n - 2)) % 32767;
return dp[n];
}
int main()
{
int n;
int a;
while (cin >> n)
{
for (int i = 0; i<n; i++)
{
cin >> a;
cout << Fabnic(a) << endl;
}
}
return 0;
}