蓝桥杯 BEGIN-4 入门训练 Fibonacci数列

我的梦境 提交于 2020-01-22 05:50:23

入门训练 Fibonacci数列  

时间限制:1.0s   内存限制:256.0MB

 

问题描述

Fibonacci数列的递推公式为:

,其中

当n比较大时,

也非常大,现在我们想知道,

除以10007的余数是多少。

 

输入格式

输入包含一个整数n。

 

输出格式

输出一行,包含一个整数,表示

除以10007的余数。

说明:在本题中,答案是要求

除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出

的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。

 

样例输入

10

 

样例输出

55

 

样例输入

22

 

样例输出

7704

 

数据规模与约定

1 <= n <= 1,000,000。

 

#include <stdio.h>

int main()
{
    int n;

    scanf("%d", &n);

    if (n == 1 || n == 2)
        printf("1");
    else
    {
        int fn = 2, fn_1 = 1, fn_2 = 1;
        for (int i = 3; i <= n; ++i)
        {
            fn = (fn_1 + fn_2) % 10007;
            fn_2 = fn_1;
            fn_1 = fn;
        }
        printf("%d", fn);
    }

    return 0;
}

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!