7

蓝桥杯今日份练习_hanwang的技术博客_51CTO博客

 1 year ago
source link: https://blog.51cto.com/u_15740457/5951147
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

相信小伙伴们都学过斐波那契数列,它是这样一个数列:1,1,3,5,8,13,21…………

用f(n)表示斐波那契数列的第n项,则有:f1=f2=1,fn=fn-1+fn-2(n>2).

输入一个n,求出 fn 对10的9次方+7取模结果。

输入格式:

输入一个整数n(1<=n<=10000)

输出格式:

输出fn对1000000007的值。

二、小技巧和注意事项

1、在解决斐波那契数列问题时,利用数组,我们可以"人为"忽略掉数组下标从0开始,我们定义时,就从下标1开始,跟数列相同

2、因为斐波那契额数列基本呈指数级增长,为了防止数值超过int类型,我们可以边加边取模,结果和最后整个取模是一样的(我称之为取模结合律)

三、源码+注释

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;


int main()
{
int mod = 1e9 + 7;//1e9这个指数形式要牢记,e前e后都必须是整型!
int f[100005];
int n;
cin >> n;
f[1] = 1;
f[2] = 1;
//利用数组表示斐波那契数列的技巧!在解决斐波那契数列问题时,利用数组,我们可以"人为"忽略掉数组下标从0开始,我们定义时,就从下标1开始,跟数列相同
for (int i=3;i<=n;i++)
{
f[i] = (f[i - 1] + f[i - 2])%mod;//因为斐波那契额数列基本呈指数级增长,为了防止数值超过int类型,我们可以边加边取模,结果和最后整个取模是一样的(我称之为取模结合律)
}
cout << f[n] << endl;
return 0;
}
蓝桥杯今日份练习_取模

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK