入门训练--Fibonacci数列

入门训练之Fibonacci数列的相关描述如下图


fibonacci.png

jinao1.png

jinao2.png

对问题的分析:
首先,根据数据规模与约定,确定变量的类型为长整型,因为其他整型不能满足n的取值范围。
其次,如果每次都先将n所对应的Fn先求出来,然后再去求其除以10007的余数,当n的取值非常大的时候,显然不合理。因此采用了求和公式Fn=(n-1)*n/2;
代码为:
import java.util.Scanner;
class Fibonacci {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
int f1=1,f2=1,f3=0;
if(n<3){
System.out.print("1");
return;
}
for(int i=3;i<=n;i++) {
if(f1>10007) f1=f1%10007;
if(f2>10007) f2=f2%10007;
f3=f1+f2;
f1=f2;
f2=f3;
}
System.out.print(f3%10007);
}
}
然后并可以求得正解。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Java经典问题算法大全 /*【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子...
    赵宇_阿特奇阅读 5,938评论 0 2
  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔...
    叶总韩阅读 10,534评论 0 41
  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔...
    开心的锣鼓阅读 8,571评论 0 9
  • 包(lib)、模块(module) 在Python中,存在包和模块两个常见概念。 模块:编写Python代码的py...
    清清子衿木子水心阅读 9,201评论 0 27
  • 这周二4月4日是清明节,回了一趟家。回家之前的两天都在学校上竞赛培训课,4月3日下午匆匆忙忙回家,4月4日又赶回学...
    平凡草阅读 4,538评论 0 0