一本通1189:Pell数列

本题考查递推

下面是题面:

【题目描述】

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;
}

猜你喜欢

转载自www.cnblogs.com/Kyriech-Francis/p/12365364.html