• lqb 入门训练 Fibonacci数列 (循环 PS:提柜要栈溢出)


    入门训练 Fibonacci数列  

    时间限制:1.0s   内存限制:256.0MB
       
    问题描述

    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)% my_mod  等价于  (A % my_mod + B%my_mod) %my_mod
       PS:同余定理适用与加法、乘法
      ∴ 该题可以通过 temp = (f1 % my_mod + f2 % my_mod) %my_mod; 进行简化程序的计算
     
    C/C++代码实现(AC):
      
     1 #include <iostream>
     2 #include <algorithm>
     3 #include <cstring>
     4 #include <cstdio>
     5 #include <cmath>
     6 #include <stack>
     7 #include <map>
     8 #include <queue>
     9 
    10 using namespace std;
    11 const int my_mod = 10007;
    12 
    13 int fib(int n)
    14 {
    15     int f1 = 1, f2 = 1, temp;
    16     if (n == 1 || n == 2) return 1;
    17     for (int i = 3; i <= n; ++ i)
    18     {
    19         temp = (f1 % my_mod + f2 % my_mod) % my_mod;
    20         f1 = f2;
    21         f2 = temp;
    22     }
    23     return temp;
    24 }
    25 
    26 int main()
    27 {
    28     int n;
    29     scanf("%d", &n);
    30     printf("%d
    ", fib(n));
    31     return 0;
    32 }
  • 相关阅读:
    DB2
    Data Queue
    QMQY
    CMD(SA400 Command)
    Software development process
    CSS display样式
    CSS行高line-height解释
    CS和CS3知识点
    HTML图片<img>标签空白解决方法
    CS清除浮动
  • 原文地址:https://www.cnblogs.com/GetcharZp/p/9033307.html
Copyright © 2020-2023  润新知