博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NUC1016 斐波那契数列
阅读量:6786 次
发布时间:2019-06-26

本文共 1102 字,大约阅读时间需要 3 分钟。

时间限制: 1000ms 内存限制: 65536KB

问题描述

“斐波那契数列”的发明者,是意大利数学家列昂纳多?斐波那契(生于公元1170年,籍贯大概是比萨,卒于1240年后)。他还被人称作“比萨的列昂纳多”。1202年,他撰写了《珠算原理》一书。

斐波那契数列衍生于《珠算原理》中的一道题目:

某人把一对兔子放入一个四面被高墙围住的地方。假设每对兔子每月能生下一对小兔,而每对新生小兔从第二个月开始又具备生育能力,请问:一年后应有多少对兔子?

正如丹?布朗对我们所言,答案就是0,1,1,2,3,5,8,13,21,然后可按34,55……一直排列下去。(从第三位起)每位数都是前两位数之和,这是欧洲人所知的第一个此类数列。

斐波那契数数列可表示为0、1、1、2、3... ( N1=0,N2=1 Ni=Ni-1+Ni-2 )

给定i计算斐波那契数列第Ni项最后7位数字.

输入描述

第一行有一个正整数N表示下边有N个情况需要你去计算。

接下来的N行每行有一个正整数i,表示计算第Ni项的最后7位数字。

其中( 1 ≤ i ≤ 1000000 )

输出描述

输出N行计算结果

样例输入

4

5

6

7

10

样例输出

3

5

8

34

问题分析:

对于每次输入的i,若调用一次计算函数,那么重复计算就太多了。所以,打表是必须的。

每一项求的是最后7位数,就用模除,数值就不太大了。

程序说明:

函数setfib()的功能是计算斐波那契数列的各个项,计算结果放入表中。

需要注意元素的个数,定义数组fib[]时,那个“+1”是必要的。

参考链接:(略)

AC的C++程序如下:

#include 
using namespace std;const int MOD = 10000000;const int N = 1000000;int fib[N+1];void setfib(int n){ fib[1] = 0; fib[2] = 1; for(int i=3; i<=n; i++) fib[i] = (fib[i - 2] + fib[i - 1]) % MOD;}int main(){ int n, i; setfib(N); cin >> n; while(n--) { cin >> i; cout << fib[i] << endl; } return 0;}

转载于:https://www.cnblogs.com/tigerisland/p/7563883.html

你可能感兴趣的文章
linux/centos6 系统时间同步 同步系统时间 ntpdate
查看>>
第一次开启51CTO博客
查看>>
升职还需犹豫?
查看>>
我的友情链接
查看>>
CMD框变小字体显示乱码
查看>>
正则总结:JavaScript中的正则表达式
查看>>
HAProxy 详解
查看>>
7.1文件查找之find命令详解
查看>>
Linux系统管理-(11)-网络配置ifcfg家族
查看>>
memset()
查看>>
Jquery Ajax二次封装(部分转载)
查看>>
android studio3 logcat无日志的问题
查看>>
我的友情链接
查看>>
tinyxml使用
查看>>
mariadb
查看>>
iOS 时间与日期处理
查看>>
Linux中yum网络服务器与本地服务器的安装
查看>>
[2013.12.28更新:构建教程,支持CB2、CT] 构建自己的Debian Linux
查看>>
flume+kafka+storm运行实例
查看>>
mysql show processlist分析
查看>>