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