0
点赞
收藏
分享

微信扫一扫

1202:Pell数列

JakietYu 2022-04-05 阅读 75
c++

【题目描述】

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

相关推荐

0 条评论