问题链接:CCF NOI1071 Pell数列



时间限制: 1000 ms  空间限制: 262144 KB

题目描述

Pell数列a1,a2,a3...的定义是这样的:a1=1,a2=2, ... ,an=2*an-1+an-2  (n>2)。给出一个正整数k,要求Pell数列的第k项模上32767是多少。

输入

第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数k (1<=k<1000000)。

输出

n行,每行输出对应一个输入。输出应是一个非负整数。

样例输入

2

1

8

样例输出

1

408

数据范围限制

1<=n<=10,1<=k<1000000



问题分析

这个问题在函数递推定义上,类似于斐波那契数列,数列的第n项都是递推定义的。

关键是测试用例可能很多,所以必须打表。

Pell数列的每一项被模除,所以值不大,用int类型就可以了。

程序说明

函数setpell()计算Pell数列的各个项存储在数组pell[]中备用,函数是用递推来实现。

要点详解

  • 用函数封装功能是一个好的做法。
  • 能用递推就不用递归,递归的代码逻辑往往比递推要简洁,但是通常时间上要慢并且需要更多的存储。
  • 重复多次使用计算函数值时,如果函数是递归定义的,简单地封装函数会导致重复计算,通常用打表的方法来解决。这是一种套路,需要熟练掌握。

参考链接:(略)。


100分通过的C语言程序:

#include <stdio.h>#define MOD 32767
#define N 1000000
int pell[N+1];void setpell(int n)
{int i;pell[1] = 1;pell[2] = 2;for(i=3; i<=n; i++)pell[i] = (2 * pell[i - 1] + pell[i - 2]) % MOD;
}int main(void)
{int n, i;setpell(N);scanf("%d", &n);while(n--) {scanf("%d", &i);printf("%d\n", pell[i]);}return 0;
}

CCF NOI1071 Pell数列相关推荐

  1. Bailian2786 Pell数列【数列】(POJ NOI0102-1788,POJ NOI0103-1788)

    问题链接:POJ NOI0102-1788 Pell数列. 问题链接:POJ NOI0103-1788 Pell数列. Pell数列 描述 Pell数列a1, a2, a3, ...的定义是这样的,a ...

  2. 37.递推:Pell数列

    总时间限制: 3000ms 内存限制: 65536kB 描述 Pell数列a1, a2, a3, ...的定义是这样的,a1 = 1, a2 = 2, ... , an = 2 * an − 1 + ...

  3. 信息学奥赛一本通 1189:Pell数列 | 1202:Pell数列 | OpenJudge NOI 2.3 1788:Pell数列 | 2.3 1788:Pell数列

    [题目链接] ybt 1189:Pell数列 ybt 1202:Pell数列 OpenJudge NOI 2.2 1788:Pell数列 OpenJudge NOI 2.3 1788:Pell数列 [ ...

  4. 信息学奥赛一本通(1202:Pell数列)

    1202:Pell数列 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 24392     通过数: 7318 [题目描述] Pell数列a1,a2,a3,...a ...

  5. 信息学奥赛一本通(1189:Pell数列)

    1189:Pell数列 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 17982     通过数: 9057 [题目描述] Pell数列a1,a2,a3,...a ...

  6. Pell数列(信息学奥赛一本通-T1202)

    [题目描述] Pell数列a1,a2,a3,...的定义是这样的,a1=1,a2=2,...,an=2an−1+an−2(n>2). 给出一个正整数k,要求Pell数列的第k项模上32767是多 ...

  7. Pell数列(信息学奥赛一本通-T1189)

    [题目描述] Pell数列a1,a2,a3,...的定义是这样的,a1=1,a2=2,...,an=2an−1+an−2(n>2). 给出一个正整数k,要求Pell数列的第k项模上32767是多 ...

  8. 1788:Pell数列

    总时间限制:  3000ms 内存限制:  65536kB 描述 Pell数列a1, a2, a3, ...的定义是这样的,a1 = 1, a2 = 2, ... , an = 2 * an − 1  ...

  9. OpenJudge_P1788 Pell数列(递推)

    总时间限制: 3000ms 内存限制: 65536kB 描述 Pell数列a1, a2, a3, -的定义是这样的,a1 = 1, a2 = 2, - , an = 2 * an − 1 + an - ...

最新文章

  1. Thinkpad R400 a16驱动安装笔记
  2. 北斗导航 | RAIM:改进的最优加权平均解(IOWAS)算法(接收机自主完好性监测)
  3. Android Studio 运行模拟器时提示 “/dev/kvm device: permission denied”
  4. 一键了结CUP100%问题
  5. 关于有类路由协议和无类路由协议
  6. 为什么技术人干得越久越拿不到高薪?
  7. 多字节常量char m='\abcd'
  8. Google I/O 还没开始,我们先来看点什么?
  9. SQLite 之 C#版 System.Data.SQLite 使用
  10. 收入时间序列——之预测总结篇
  11. pantum打印机驱动安装m6506_奔图Pantum M6506NW 驱动
  12. 转《腾讯大讲堂11 拍拍ce工作经验分享》
  13. 2008年买书流水账
  14. 伍迷随想冷饭集 之 北国冬天之随想
  15. 2019年的第一场雪来的既猛又烈,突然想分享点东西
  16. SUMOlympics
  17. Windows下cmd进入MySql的命令界面
  18. 详解如何获取深度学习模型中间层的输出值
  19. 刚写完的 基于网页的音乐平台网站(含后台) 毕业设计毕设源码 (1)功能介绍
  20. 2015年《大数据》高被引论文Top10文章No.7——大数据机器学习系统研究进展(下)...

热门文章

  1. 国内少有的Flutter干货分享:Flutter的原理及美团的实践!
  2. transferwise怎么提现_收款工具transfer wise介绍(多币种、可收CJ联盟)
  3. 怎样才能恢复误删的数据-免费版本
  4. linux系统重启方式,查看linux系统重启的命令和方式
  5. Java面试知识(持续更新)
  6. plsql打开sql窗口快捷键_可以提升3倍开发效率的 Intellij IDEA快捷键大全汇总(2019)...
  7. LeetCode35. 搜索插入位置(二分查找)
  8. Qt总结之十二:C/C++内存分配方式与存储区
  9. 【C/C++】一篇文章教你区分数组指针指针数组
  10. ZT: Delphi编程规范1.0.0.0 (yckxzjj )