蓝桥杯入门训练 Fibonacci数列
2015-11-24 15:08
429 查看
问题描述
Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。
当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。
输入格式
输入包含一个整数n。
输出格式
输出一行,包含一个整数,表示Fn除以10007的余数。
说明:在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。
样例输入
10
样例输出
55
样例输入
22
样例输出
7704
数据规模与约定
1 <= n <= 1,000,000。
要做这道题,首先需要知道(i+j)%n跟(i%n+j%n)%n的结果是一样的,于是就能做出来这道题了。
源代码:
#include <iostream>
using namespace std;
int main()
{
int a1, a2, a3, k;
int i;
a1 = 1;
a2 = 1;
cin >> k;
if (k == 1||k==2)
cout << "1\n";
if (k >= 3)
{
for (i = 3; i <= k; i++)
{
a3 = (a2 % 10007 + a1 % 10007) % 10007;
a1 = a2;
a2 = a3;
}
cout << a3 << endl;
}
system("PAUSE");
return 0;
}
Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。
当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。
输入格式
输入包含一个整数n。
输出格式
输出一行,包含一个整数,表示Fn除以10007的余数。
说明:在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。
样例输入
10
样例输出
55
样例输入
22
样例输出
7704
数据规模与约定
1 <= n <= 1,000,000。
要做这道题,首先需要知道(i+j)%n跟(i%n+j%n)%n的结果是一样的,于是就能做出来这道题了。
源代码:
#include <iostream>
using namespace std;
int main()
{
int a1, a2, a3, k;
int i;
a1 = 1;
a2 = 1;
cin >> k;
if (k == 1||k==2)
cout << "1\n";
if (k >= 3)
{
for (i = 3; i <= k; i++)
{
a3 = (a2 % 10007 + a1 % 10007) % 10007;
a1 = a2;
a2 = a3;
}
cout << a3 << endl;
}
system("PAUSE");
return 0;
}
相关文章推荐
- Lua中关于求模与求余的区别介绍
- java实现斐波那契数列的3种方法
- java数学归纳法非递归求斐波那契数列的方法
- C++输出斐波那契数列的两种实现方法
- 求斐波那契(Fibonacci)数列通项的七种实现方法
- 数学公式
- Go语言学习笔记(练习) - 斐波那契数列
- 《收集苹果》 动态规划入门
- 《DNA比对》蓝桥杯复赛试题
- 《背包问题》 动态规划
- 连号区间 蓝桥杯 算法
- 蓝桥杯——历届试题(1-10)
- 2015 蓝桥杯第六届 省赛java A组第7题 扑克牌组合
- leetcode 虐我篇之(二十一)Climbing Stairs
- 蓝桥网练习题 日期计算
- 2015蓝桥杯校内选拔C/C++组题1
- 2015蓝桥杯C/C++校内选拔 C组 题2
- 青蛙跳台阶解法 时间复杂度O(n) 空间复杂度O(1)
- 蓝桥杯 历届试题 邮局 2017-09-24 修改
- 蓝桥杯—兰顿蚂蚁