蓝桥杯2014年以前JAVA历年真题及答案整理——Fibonacci数列

来源:互联网 发布:js关闭当前页面 编辑:程序博客网 时间:2024/05/21 08:59

问题描述

      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。

java实现:

import java.util.Scanner;public class Main{    public static void main(String[] args) {        Scanner scanner = new Scanner(System.in) ;        int num = scanner.nextInt() ;        int[] a = new int[num+2] ;        a[1] = a[2] = 1;        if (num == 1) {            a[num] = 1 ;        }else if (num == 2) {            a[num] = 1 ;        }else {            for (int i = 3; i <= num; i++) {                a[i] = (a[i - 1] + a[i - 2]) % 10007 ;            }        }        System.out.println(a[num]);    }}

C实现:

#include <stdio.h>int F(int n){    int i, s1 = 1, s2 = 1, s3 = 1;    for (i = 3; i <= n; i++)    {        s3 = s1 + s2;        if (s3 > 10007)             s3 -= 10007;        s1 = s2;        s2 = s3;    }    return s3;}int main(){    int n;    scanf("%d", &n);    printf("%d", F(n));    return 0;}


0 0