51 nod1242 斐波那契数列的第N项

6人阅读 评论(0) 收藏 举报
分类:
基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
 收藏
 关注
斐波那契数列的定义如下:

F(0) = 0
F(1) = 1
F(n) = F(n - 1) + F(n - 2) (n >= 2)

(1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, ...)
给出n,求F(n),由于结果很大,输出F(n) % 1000000009的结果即可。
Input
输入1个数n(1 <= n <= 10^18)。
Output
输出F(n) % 1000000009的结果。
Input示例
11
Output示例
89

思路:n的范围过大,暴力超时
矩阵快速幂

https://blog.csdn.net/y990041769/article/details/22311889

#include<bits/stdc++.h>
#define INF 1000000009
using namespace std;
struct Mat
{
    long long a[2][2];
};
Mat mul(Mat A,Mat B)
{
    Mat temp;
    int i,j;
    memset(temp.a,0,sizeof(temp.a));
    for(i=0;i<2;i++)
    {
        for(j=0;j<2;j++)
        {
            for(int k=0;k<2;k++)
                temp.a[i][j]=(temp.a[i][j]+A.a[i][k]*B.a[k][j])%INF;
        }
    }
    return temp;
}
Mat del(Mat ans,long long n)
{
    Mat num={1,0,0,1};
    while(n)
    {
        if(n&1)
            num=mul(num,ans);
        ans=mul(ans,ans);
        n>>=1;
    }
//    for(int i=0;i<2;i++)
//    {
//        for(int j=0;j<2;j++)
//            cout<<num.a[i][j]<<" ";
//        cout<<endl;
//    }
    return num;
}
int main()
{
    long long n;
    cin>>n;
    Mat C={1,1,1,0};
    C=del(C,n);
    cout<<C.a[0][1]<<endl;
    return 0;
}

查看评论

51实战演练之存储器

本套课程主要对51的程序存储器和数据存储器的方方面面进行了详细的讲解。 从51系统的编址开始,到如何扩展存储器,再到编程人员如何读图,再到存储器如何使用等环节进行了全面详细的讲解。 课程特色: 1)根据实际项目的需要讲单片机; 2)让我们有机会接触项目中的51;
  • 2018年04月13日 09:56

51nod 1242 斐波那契数列的第N项(矩阵快速幂)

1242 斐波那契数列的第N项 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 斐波那契数列的定义如下...
  • yeguxin
  • yeguxin
  • 2015-08-27 16:43:04
  • 995

51Nod 1242 斐波那契数列的第N项

题目链接:51Nod 1242 斐波那契数列的第N项斐波那契数列的定义如下: F(0) = 0 F(1) = 1 F(n) = F(n - 1) + F(n - 2) (n >= ...
  • Dextrad_ihacker
  • Dextrad_ihacker
  • 2016-03-16 21:15:39
  • 1237

51nod 1242 斐波那契数列的第N项(矩阵快速幂)

1242 斐波那契数列的第N项 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 斐波那契数列的定义如下: F(0) = 0 F(...
  • a617350885
  • a617350885
  • 2016-08-30 20:22:22
  • 742

算法学习记录六(C++)--->获取斐波那契数列第n项

描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。 n...
  • Deft_MKJing
  • Deft_MKJing
  • 2017-08-03 16:55:44
  • 747

斐波那契数列第N项(C++)

斐波那契数列
  • huplion
  • huplion
  • 2015-01-09 12:46:38
  • 1326

C++求斐波那契数列的第n项

#include using namespace std; int fib(int n); int main() { int a; while(cin>>a) { ...
  • yanxiuhao
  • yanxiuhao
  • 2016-08-24 16:06:40
  • 642

斐波那契数列第n项的高效解法

参考书籍《剑指Offer》 常见解法谈及斐波那契数列,我们直接就可以想到f(n)=f(n-1)+f(n-2)。于是做出如下解:long long Fibonacci(unsigned int n) {...
  • Double2hao
  • Double2hao
  • 2016-12-13 09:21:13
  • 1598

求斐波那契数列的第n项

求斐波那契数列的第n项
  • guozhenqiang19921021
  • guozhenqiang19921021
  • 2016-05-13 13:28:44
  • 1366

51nod:1242 斐波那契数列的第N项

斐波那契数列的定义如下: F(0) = 0 F(1) = 1 F(n) = F(n - 1) + F(n - 2) (n >= 2) (1, 1, 2, 3, 5, 8, 13, 21, 34...
  • qq_28954601
  • qq_28954601
  • 2016-08-03 15:07:32
  • 470
    个人资料
    持之以恒
    等级:
    访问量: 1万+
    积分: 2115
    排名: 2万+
    最新评论