问题描述
Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。
当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。
数据规模与约定
1 <= n <= 1,000,000。
思路:
1、第一种情况,当n为1或2时直接返回1
2、第二种情况,当n>2,a、b向前进位,c是第三个数,直接求余1007
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a=1,b=1,c=0;
int n = scanner.nextInt();
if(n==1||n==2) System.out.println(1);
else {
for (int i = 3; i <= n; i++) {
c = (a + b) % 10007;
a = b;
b = c;
}
System.out.println(c);
}
}
}