题目背景

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

• 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)范围内。

嗯,用这个题来打个矩阵快速幂模板(~ ̄▽ ̄)~

code:

//By Menteur_Hxy
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std; const long long MOD=1000000007;
const int MAX=3;
const int INF=0x3f3f3f3f; long long rd() {//一开始写的快读是int的交了三回才发现 o(╥﹏╥)o
long long x=0;
int fla=1; char c=' ';
while(c>'9'|| c<'0') {if(c=='-') fla=-fla; c=getchar();}
while(c<='9'&&c>='0') x=x*10+c-'0',c=getchar();
return x*fla;
} struct mat{ //Matrix 矩阵
long long da[MAX][MAX];
int n,m; mat(int x=1,int y=1) {
n=x,m=y;
memset(da,0,sizeof da);
} void operator =(mat x) {
n=x.n,m=x.m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
da[i][j]=x.da[i][j];
} mat operator *(mat b) { //注意:需a.m==b.n
mat c;
c.n=n;c.m=b.m;
for(int i=1;i<=c.n;i++)
for(int j=1;j<=c.m;j++) {
c.da[i][j]=0;
for(int k=1;k<=m;k++)
c.da[i][j]+=(da[i][k]%MOD*b.da[k][j]%MOD)%MOD,c.da[i][j]%=MOD;
// 第一次把b.da[k][j] 打成da[k][j] T^T
}
return c;
} void print() {
for(int i=1;i<=n;i++){
printf("%d",da[i][1]);
for(int j=2;j<=m;j++)
printf(" %d",da[i][j]);
printf("\n");
}
} void mrd() {
n=rd(),m=rd();
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
da[i][j]=rd();
} mat mul(mat b,long long d) {// a乘以b的d次方
mat c=*this;
for(;d;d>>=1) {
if(d&1) c=c*b;
b=b*b;
}
return c;
}
}; int main() {
long long num=rd();
mat a,b; a.n=1,a.m=2;
a.da[1][1]=0,a.da[1][2]=1;
b.n=b.m=2;
b.da[1][2]=b.da[2][1]=b.da[2][2]=1; // for(long long i=1;i<=x;i++) a=a*b;
// a.print(); // for(;num;num>>=1) {
// if(num&1) a=a*b;
// b=b*b;
// } a=a.mul(b,num); printf("%lld",a.da[1][1]);
return 0;
}

最新文章

  1. express-session使用理解
  2. sql server 数据遍历插入表变量
  3. HDU 1141---Brackets Sequence(区间DP)
  4. java报表工具finereport常用函数的用法总结(数组函数)
  5. sqlserver存储过程批量插入数据
  6. 洛谷P1121 环状最大两段子段和
  7. .gitignore 配置
  8. 如果Android和C#在一起?
  9. 浏览器内核Trident/Gecko/WebKit/Presto
  10. Android真机连接手机Target显示unknown cmd命令下adb devices 显示offline
  11. github 教程
  12. 【USACO09OCT】热浪Heat Wave
  13. vim快捷键汇总
  14. html 转 PDF wkhtmltopdf image 不能显示的问题
  15. AndroidStudio中如何使用GsonFormat
  16. jdk1.8安装后查看Java -version出错。
  17. CentOS 7 设置静态IP
  18. 1、从C语言到C++
  19. 未能加载文件或程序集“System.Web.Http.WebHost, Version=4.0.0.0, ”或它的某一个依赖项。系统找不到指定的文件。
  20. pycharm格式化代码 常用快捷键

热门文章

  1. 做acm 需要学的算法
  2. 洛谷 P1768 天路
  3. logistic regression model
  4. SQL优化(SQL TUNING)之10分钟完毕亿级数据量性能优化(SQL调优)
  5. 虚拟机window7与主机之间文件复制设置
  6. java根据内容生成二维码图片
  7. Java图形界面(GUI)——如何将JTable成功放入面板
  8. luogu1120 小木棍【数据加强版】 暴力剪枝
  9. POJ1742 Coins 背包
  10. java.sql.SQLException: Field &#39;id&#39; doesn&#39;t have a default value解决方案