博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷——P1962 斐波那契数列
阅读量:6326 次
发布时间:2019-06-22

本文共 1005 字,大约阅读时间需要 3 分钟。

P1962 斐波那契数列

题目背景

大家都知道,斐波那契数列是满足如下性质的一个数列:

• f(1) = 1

• f(2) = 1

• f(n) = f(n-1) + f(n-2) (n ≥ 2 且 n 为整数)

题目描述

请你求出 f(n) mod 1000000007 的值。

输入输出格式

输入格式:

 

·第 1 行:一个整数 n

 

输出格式:

 

第 1 行: f(n) mod 1000000007 的值

 

输入输出样例

输入样例#1:
5
输出样例#1:
5
输入样例#2:
10
输出样例#2:
55

说明

对于 60% 的数据: n ≤ 92

对于 100% 的数据: n在long long(INT64)范围内。

 

 

矩阵乘法优化斐波那契

#include
#include
#include
#include
#define mod 1000000007LLusing namespace std;struct Node{ long long m[3][3]; Node(){memset(m,0,sizeof(m));} }ans,mb;Node operator*(Node a,Node b)//矩阵乘法 { Node c; for(int i=1;i<=2;i++) for(int j=1;j<=2;j++) for(int k=1;k<=2;k++) c.m[i][j]=(c.m[i][j]%mod+a.m[i][k]*b.m[k][j]%mod)%mod; return c;}long long n;int main(){ cin>>n; mb.m[1][1]=mb.m[1][2]=mb.m[2][1]=1; ans.m[1][1]=ans.m[2][1]=1; while(n>0) { if(n&1) ans=ans*mb; mb=mb*mb;n>>=1; } cout<

 

转载于:https://www.cnblogs.com/z360/p/7684336.html

你可能感兴趣的文章
我的友情链接
查看>>
sqlserver 取取月初月末和月份间隔
查看>>
git保存帐号密码
查看>>
Linux 基础名词
查看>>
分析对手的网站,优化自己的网站。
查看>>
我的友情链接
查看>>
HDU-1166敌兵布阵
查看>>
LINUX REDHAT第一单元练习题
查看>>
shell实现多级菜单脚本编写
查看>>
Lua1.1 虚拟机指令分析
查看>>
R语言编程艺术(4)R对数据、文件、字符串以及图形的处理
查看>>
shell之RDS备份+判断是否传输完成
查看>>
Shell获取当前主机ip地址
查看>>
init : Failed to spawn readahead-collector main process :unable to execute ...
查看>>
Saltstack安装 (CentOS7.x)
查看>>
Python学习记录-2016-01-16
查看>>
我的友情链接
查看>>
决心书
查看>>
如何从本地把项目上传到github
查看>>
Exception sending context initialized event to lis
查看>>