51nod 1242 斐波那契数列的第N项(矩阵幂运算)
来源:互联网 发布:eviews横截面数据步骤 编辑:程序博客网 时间:2024/05/20 15:58
1242 斐波那契数列的第N项
基准时间限制: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
//矩阵幂运算 //注意是long long类型#include<stdio.h>#include<string.h>using namespace std;#define data 1000000009struct mat{long long a[2][2];};mat mat_return(mat x,mat y){mat res;memset(res.a ,0,sizeof(res.a));for(int i=0;i<2;i++)for(int j=0;j<2;j++)for(int k=0;k<2;k++){res.a[i][j]=(res.a[i][j]+x.a[i][k]*y.a[k][j]%data)%data;}return res;}int main(){long long n;while(~scanf("%lld",&n)){mat c,res;c.a[0][0]=c.a[0][1]=c.a[1][0]=1;//赋值 1,1,1,0; c.a[1][1]=0;memset(res.a,0,sizeof(res.a ));for(int i=0;i<2;i++)res.a[i][i]=1;//单位矩阵 ,都一样 while(n>0){//接下来就类似快速幂运算了 if(n&1)res=mat_return(res,c);c=mat_return(c,c);n/=2;}printf("%lld\n",res.a [0][1]); }return 0;}
阅读全文
0 0
- 51nod 1242 斐波那契数列的第N项(矩阵幂运算)
- 51nod 1242 斐波那契数列的第N项(矩阵快速幂)
- 51nod 1242 斐波那契数列的第N项 (矩阵快速幂)
- 【51Nod】1242 - 斐波那契数列的第N项(矩阵快速幂)
- 51nod 1242 斐波那契数列的第N项(矩阵快速幂)
- 51nod 1242 斐波那契数列的第N项【矩阵快速幂】
- [51NOD]-1242 斐波那契数列的第N项 [矩阵快速幂]
- 51 nod 1242 斐波那契数列的第N项 矩阵快速幂
- 51Nod 1242 斐波那契数列的第N项(矩阵快速幂)
- 51Nod-斐波那契数列的第N项(矩阵快速幂)
- 51nod--1242 斐波那契数列第N项 (矩阵乘法优化)
- 51nod 1242 斐波那契数列的第N项(O(logn)求递推式)
- 1242 斐波那契数列的第N项(矩阵快速幂)
- 1242 斐波那契数列的第N项(矩阵快速幂)
- 51nod 1242 1242 斐波那契数列的第N项
- 20140911 【 初等数论 】 51nod 1242 . 斐波那契数列的第N项
- 51Nod 1242 斐波那契数列的第N项
- 51Nod-1242-斐波那契数列的第N项
- 计算机网络
- 吴恩达-斯坦福CS229机器学习课程-2017(秋)最新课程分享
- JSF转换器&验证器的使用
- 利用Maven搭建SSM项目
- mysql调优
- 51nod 1242 斐波那契数列的第N项(矩阵幂运算)
- Docker -- dockerFile指令说明
- 51nod 1006 最长公共子序列Lcs
- springboot 在@Autowire无法注入bean时的临时处理办法
- 排列
- Jenkins
- 原码、反码与补码
- ES6--异步操作之Promise
- Spring Boot整合jdbctemplate