Background
Special for beginners, ^_^
Description
Pell 数列 1,2,3,…a1,a2,a3,… 的定义是这样的,a1=1,a2=2,…,an=2an−1+an−2(n>2)。
给出一个正整数 k,试求 Pell 数列的第k 项模上 32767是多少。
Format
Input
第 11 行是测试数据的组数n(1≤n≤103),后面跟着 n 行输入。
每组测试数据占 1 行,包括一个正整数k(1≤k<1000)。
Output
n 行,每行输出对应一个输入。输出应是一个非负整数。
Samples
输入数据 1
2
1
8
输出数据 1
1
408
Limitation
1s, 1024KiB for each test case.
思路:递归
代码:
#include<iostream>
using namespace std;
int a[1005] = {0,1,2};
int pell(int k)
{
if(a[k])
{
return a[k];
}
else
{
return a[k] = (2 * pell(k - 1) % 32767 + pell(k - 2) % 32767) % 32767;
}
}
int main()
{
int n;
cin>>n;
for(int i = 1; i <= n; i++)
{
int b;
cin>>b;
cout<<pell(b) % 32767 << endl;
}
}