數列

鏈接:https://www.nowcoder.com/questionTerminal/1843c3b052984e3f98c68935ea3c0d79?orderByHotValue=1&page=1&onlyReference=false
來源:牛客網

某種特殊的數列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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章