蓝桥杯:入门训练 Fibonacci数列
2016-01-20 21:07
399 查看
入门训练 Fibonacci数列
问题描述
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。
问题描述
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。
import java.util.Scanner; class Main { public static void main(String[] args) { Scanner c = new Scanner(System.in); int n = c.nextInt(); int f1 = 1; int f2 = 1; int f3; for(int i = 1;i <= (n-1)/2 ;i++){ f1 = (f1 + f2)%10007; f2 = (f1 + f2)%10007; } if(n <= 2){ System.out.println(1); } else if(n % 2 == 0){ System.out.println(f2); }else{ System.out.println(f1); } } }
//递归 public static int F(int n) { if(n==1||n==2) { return 1; } else { return (F(n-1)+F(n-2)); } }
相关文章推荐
- 解决Ora-28056问题
- 【Android】intent action 跳转到系统使用,调用系统功能
- Picture(HDOJ-2052)
- 第一天
- 数据结构之递归算法
- HDU 2035 人见人爱A^B
- c语言成绩统计系统
- 【Jan.Challenge】总结
- Linux文件系统管理
- P21 (*) Insert an element at a given position into a list.
- P21 (*) Insert an element at a given position into a list.
- Spark on Yarn年度知识整理
- Certification, Software Downloads, and Support Coverage
- Linux文件系统管理
- 4033: [HAOI2015]T1 树型DP
- if 条件语句的 “黄金大道法则”
- hdu 5566 Clarke and room ac自动机+树链剖分+主席树
- 如何在 CentOS / RHEL 上设置 SSH 免密码登录
- Android应用启动速度优化
- cuda7.0安装windows+vs2012