蓝桥杯(1)斐波拉契数列问题

来源:互联网 发布:淘宝卖衣服怎么找厂家 编辑:程序博客网 时间:2024/05/22 10:34
package com.lanqiaobei.model1;import java.util.Scanner;/*问题描述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。*///模加公式  :(A+B) Mod N = (A Mod N + B Mod N) Mod N,所以Fn的余数可以由F(n-1) Mod N + F(n-2) Mod N求出public class Main4 {        public static int MAX = 10007;          public static void main(String[] agrs)          {              Scanner scanner = new Scanner(System.in);              int n = scanner.nextInt();              int f1,f2,f3;              f1 = f2 = 1;              f3 = 1;              for(int i = 3; i <= n; i++)              {                  f3 = (f2%MAX + f1%MAX)%MAX;                  f1 = f2;                  f2 = f3;              }              System.out.println(f3);     }}
原创粉丝点击