Pell数列【一本通在线评测】

目录

描述

输入描述

输出描述

用例输入 1 

用例输出 1 

什么是pell数列

一、定义与递推关系

二、数学性质

三、应用领域

四、编程实现要点

五、扩展与相关概念

 C++代码实现


描述

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行,每行输出对应一个输入。输出应是一个非负整数。

用例输入 1 

2
1
8

用例输出 1 

1
408

什么是pell数列

一、定义与递推关系

  1. 基本定义
    Pell数列是一个满足递推关系的整数数列,初始项为 

    a(1)=1、a(2)=2,后续项满足a(n​)=2^a(n−1​)+a(n−2)。(n≥3).

    • 示例前几项:1, 2, 5, 12, 29, 70, 169...(增长速度接近指数级)。
  2. 变体定义
    部分文献中会调整初始条件,例如定义为P(0)=0、P(1)=1,但递推公式相同。


二、数学性质

  1. 增长特性
    Pell数列的增长速度极快,例如第24项已超过 2×1082×108,需通过模运算(如模32767)避免溢出。

  2. 与佩尔方程的关系
    Pell数列可用于求解佩尔方程 �2−��2=1x2−Dy2=1(D为非平方正整数),其解与数列的奇数项和偶数项相关。

  3. 倒数和恒等式
    研究显示,Pell数列的奇数项与偶数项的倒数和存在特定恒等式,例如通过通项公式推导出的对称性表达式。


三、应用领域

  1. 数论与代数

    • 用于解决佩尔方程、连分数展开等问题。
    • 与黄金分割比、斐波那契数列有间接联系,例如在递推结构上的相似性。
  2. 几何问题
    在三角平方数(如正方形数的扩展形式)和平面几何的近似计算中发挥作用。

  3. 计算机科学
    常见于编程题目中,例如计算第k项模32767的值,需通过递推或动态规划优化递归导致的超时问题。


四、编程实现要点

  1. 避免递归
    直接递归会因重复计算导致效率低下,推荐使用递推或预计算法,提前存储数列项。

  2. 大数处理
    每一步计算均需取模,防止数值溢出。


五、扩展与相关概念

  1. 关联数列

    • Pell-Lucas数列:初始项为2, 2,递推公式相同,用于更复杂的数论问题。
    • Lehmer数Lucas数:与Pell方程解的构造相关。
  2. 连分数方法
    通过连分数展开求解佩尔方程时,Pell数列的项对应连分数的收敛子

 C++代码实现

#include<bits/stdc++.h>
using namespace std;
int a[1000001];
int main(){
    a[1]=1,a[2]=2;
    for(int i=3;i<=1000000;i++){
        a[i]=(a[i-1]*2+a[i-2])%32767;
    }
    int n;
    cin>>n;
    int b[n+1];
    for(int i=1;i<=n;i++){
        cin>>b[i];
        cout<<a[b[i]]<<endl;
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值