本题考查递推
下面是题面:
【题目描述】
Pell数列a1,a2,a3,...的定义是这样的,a1=1,a2=2,...,an=2an−1+an−2(n>2)。
给出一个正整数k,要求Pell数列的第k项模上32767是多少。
【输入】
第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数k (1≤k<1000000)。
【输出】
n行,每行输出对应一个输入。输出应是一个非负整数。
【输入样例】
2
1
8
【输出样例】
1
408
代码实现
#include<iostream>
#include<cstdio>
using namespace std;
int i;
/*递推函数*/
int chg(int m)
{
long long x=1,y=2,temp=1;
for(int p=3;p<=m;p++)
{
temp=(2*y+x)%32767;
x=y;
y=temp;
}
if(m==2)
temp=2;
return temp;
}
int main()
{
int n;
/*输入*/
cin>>n;
int a[n+1];
for(i=1;i<=n;i++)
{
cin>>a[i];
}
/*输出*/
for (i=1;i<=n;i++)
{
printf("%d\n",chg(a[i]));
}
return 0;
}