【题目描述】
Pell数列a1,a2,a3,...𝑎1,𝑎2,𝑎3,...的定义是这样的,a1=1,a2=2,...,an=2an−1+an−2(n>2)𝑎1=1,𝑎2=2,...,𝑎𝑛=2𝑎𝑛−1+𝑎𝑛−2(𝑛>2)。
给出一个正整数 k𝑘,要求Pell数列的第 k𝑘 项模上 3276732767 是多少。
【输入】
第1行是测试数据的组数 n𝑛,后面跟着 n𝑛 行输入。每组测试数据占 11 行,包括一个正整数k(1≤k<1000000)𝑘(1≤𝑘<1000000)。
【输出】
n𝑛 行,每行输出对应一个输入。输出应是一个非负整数。
【输入样例】
2
1
8
【输出样例】
1
408
#include <bits/stdc++.h>
using namespace std;
int n;
int a[1000005];
int f(int y){
if (a[y]>0) return a[y];
if (y==1) return 1;
if (y==2) return 2;
return a[y]=(2*f(y-1)+f(y-2))%32767;
}
int main() {
cin>>n;
for(int i=1;i<=n;i++){
int x;
cin>>x;
cout<<f(x)<<endl;
}
return 0;
}