1788.Pell数列

本文最后更新于 2023年9月16日 早上

题目

描述 Pell数列a1, a2, a3, …的定义是这样的,a1 = 1, a2 = 2, … , an = 2 * an − 1 + an - 2 (n > 2)。
给出一个正整数k,要求Pell数列的第k项模上32767是多少。

输入 第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数k (1 ≤ k < 1000000)。

输出 n行,每行输出对应一个输入。输出应是一个非负整数。

样例输入

1
2
3
2
1
8

样例输出

1
2
1
408

思路

  1. 先暴力递归出来1000000位数组
  2. 直接取值即可

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;

int ans[1000010] = {1, 2};

int main()
{
int n;
for (int i = 2; i < 1000000; i++)
{
ans[i] = (ans[i - 1] * 2 + ans[i - 2]) % 32767;//数学问题 不影响最终值
}
cin >> n;
while (n--)
{
int m;
cin >> m;
cout << ans[m - 1] << endl;
}

return 0;
}

1788.Pell数列
https://www.harkerhand.online/OJ/1788/
作者
harkerhand
发布于
2021年6月12日
更新于
2023年9月16日
许可协议