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

本文共 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

你可能感兴趣的文章
BZOJ-2743: [HEOI2012]采花(树状数组 or TLE莫队)
查看>>
菜鸟谈谈C#中的构造函数和析构函数
查看>>
2014-4-21
查看>>
【转】Python多进程编程
查看>>
旁注攻击介
查看>>
Android之Service与IntentService的比较
查看>>
Single Number
查看>>
Struts2部分
查看>>
2014-8-4阿里电话面试
查看>>
这些小工具让你的Android 开发更高效
查看>>
T-SQL注意事项(1)——SET NOCOUNT ON的去与留
查看>>
Spring4新的javaConfig注解
查看>>
移动端的交互设计软件JustinMind
查看>>
DotNetCore 定时服务 HangFire
查看>>
Centos7安装Git
查看>>
Struts2学习笔记(九)——数据校验
查看>>
web系统压力测试
查看>>
我爱我家-北京-mysql
查看>>
win32 进程崩溃时禁止弹出错误对话框
查看>>
FZU 2110 Star 数学
查看>>