Pell数列a1, a2,a3, ...的定义是这样的,a1 = 1, a2 =2, ... , an =2 * an − 1 + an - 2 (n > 2)。
给出一个正整数k,要求Pell数列的第k项模上32767是多少。
###代码如下###
#include <iostream>
#include<algorithm>
using namespace std;
int Pell(int k)
{
if(k==1)
return 1;
if(k==2)
return 2;
else
return (2*Pell(k-1)+Pell(k-2))%32767;
}
int main()
{
int n;
cin>>n;//n行组数
int k;//该组的数
cin>>k;
while(cin>>k)
{
for(int i=2;i<=k;i++)
{
Pell(k);
}
cout<<Pell(k)<<endl;
}
return 0;
}
输入:2 1 8
输出:408
解析:同爬楼梯是一样的情况,构造一个函数来盛放模32767后的值,
先算一个组pell队列的值,然后递归算其他组的值