文章目录

  • 题目描述
  • 题目描述
  • 代码

题目描述

题目描述

关键在于如何转化为本题的题目。。。

y=(1-根号5)/2$$

再令:

A(n)=xn +++ yn

通过尝试可以发现,A其实就是一个1,3为前两项的斐波拉契数列

xn=A(n)-yn

A的值可以用矩阵快速幂来求
而y是在(-1,0)的区间
所以分一下n的奇偶性,就可以求出答案了

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int mod=1e9+7;
ll a,b,c,k;
ll ans[4][4],res[4][4],trans[4][4];
void mul1(){//res*resmemset(trans,0,sizeof(trans));for(int i=1;i<=2;i++){for(int j=1;j<=2;j++){for(int p=1;p<=2;p++){trans[i][j]+=res[i][p]*res[p][j];trans[i][j]%=mod;}}}for(int i=1;i<=2;i++){for(int j=1;j<=2;j++){res[i][j]=trans[i][j];}}
}
void mul2(){//res*ansmemset(trans,0,sizeof(trans));for(int i=1;i<=2;i++){for(int j=1;j<=2;j++){for(int p=1;p<=2;p++){trans[i][j]+=ans[i][p]*res[p][j];trans[i][j]%=mod;}}}for(int i=1;i<=2;i++){for(int j=1;j<=2;j++){ans[i][j]=trans[i][j];}}
}
void ksm(ll w){while(w){if(w&1) mul2();mul1();w>>=1;}return;
}
void print(){for(int i=1;i<=2;i++){for(int j=1;j<=2;j++){printf("%d ",ans[i][j]);}printf("\n");}
}
int main()
{ans[1][1]=ans[2][2]=1;res[1][1]=res[1][2]=res[2][1]=1;scanf("%lld",&a);if(a<=2) {printf("1");return 0;}ksm(a-2);
//  print();printf("%lld",(ans[1][1]+ans[2][1])%mod);return 0;
}

YBTOJ:斐波拉契(矩阵快速幂)相关推荐

  1. 又见斐波那契~矩阵快速幂入门题

    链接:https://www.nowcoder.com/acm/contest/105/G 来源:牛客网 题目描述 这是一个加强版的斐波那契数列. 给定递推式 求F(n)的值,由于这个值可能太大,请对 ...

  2. 「GXOI / GZOI2019」逼死强迫症——斐波那契+矩阵快速幂

    题目 [题目描述] ITX351 要铺一条 $2 \times N$ 的路,为此他购买了 $N$ 块 $2 \times 1$ 的方砖.可是其中一块砖在运送的过程中从中间裂开了,变成了两块 $1 \t ...

  3. P5303 [GXOI/GZOI2019]逼死强迫症(斐波拉契、矩阵乘法)

    解析 非常妙的一个题,感受到了斐波拉契优美的归纳性质. 首先,不难发现只要两个1*1的位置固定,中间的摆法就固定了,而两边的方案都是经典的斐波拉契数列(设为 fif_ifi​). 那么枚举中间的间隔再 ...

  4. 斐波拉契数列前n项和 斐波拉契数列第n项

    此篇题解不为别的,纯属纪念,纪念一个已经且也许永远淡出我生活的人... 记不清是大二还是大三了,只记得在教四304实验室,你教我如何用矩阵快速幂来求解斐波拉契数列的第n项,然后考我怎么用类似的方法计算 ...

  5. 深入剖析斐波拉契数列

    深入剖析斐波拉契数列 前言 动态规划作为一种非常经典的一类算法,不仅在解决实际问题当中有很多实际的应用,同时通常也是面试的一个重点.本篇文章一步步剖析动态规划的基本原理,通过斐波拉契数列问题(优化时间 ...

  6. js求解斐波拉契数列

    斐波拉契数列,英文名称Fibonacci sequence,通常用 F(n) 表示,形成的序列称为斐波那契数列 该数列由0和1开始,后面的每一项数字都是前面两项数字的和,用数学语言描述就是 F(0) ...

  7. Python 探讨斐波拉契数列模素数的周期问题

    Python 探讨斐波拉契数列模素数的周期问题之目录 前言 一.生成斐波拉契数列 二.创建素数列表 三.搜索周期数列的循环节 3.1 斐波拉契数列模 p p p 的周期 3.2 循环节的搜寻代码 3. ...

  8. 冒泡排序,斐波拉契迭代、生成器

    冒泡排序: l=[1,3,0,100,1000,8,2,9,5,11,8]def maopao(l):for i in range(len(l)-1):if l[i+1] < l[i]:a= l ...

  9. [python]练习之递归和循环实现斐波拉契数列

    1 # 程序功能:用递归和循环实现斐波拉契数列 2 # 0 1 1 2 3 5 8 13 21 34 3 4 def digui_fibo(number): 5 if number == 1: 6 r ...

最新文章

  1. TCP 的那些事儿(下)
  2. java 学习心得 (近期的)
  3. redhat下给普通用户增加sudo命令,让他可以获得修改等权限
  4. java 添加图片背景_java添加背景图片
  5. c语言表达式5 gt 3 gt 1,C语言题目谁会做?
  6. 用python建立三元一次方程_python简单的三元一次方程求解实例
  7. FRAGSTATS.4中用移动窗口算法计算景观指标步骤
  8. DP算法(Dynamic Programming,俗称动态规划)是最经典算法之一
  9. mysql批量导出_mysql批量导出导入
  10. Android dex2jar反编译dex文件报错 Detail Error Information in File .\classes-error.zip
  11. 音频格式怎么转换成mp3?
  12. 如何关闭 Linux 中的嘟嘟声
  13. 应用pagehelper实现大屏展示自动换页
  14. 浏览器无法访问部分网站
  15. 生成模型技术发展过程
  16. Vue 安装echarts-gl引入vue报错
  17. input框限制只能输入正整数、字母、小数、汉字
  18. 【转载】采购订单中的容差
  19. 2019/01/01 一位前端实习生 艰辛过程 励志 实习周记(二)——第一周
  20. FlashFXP使用技巧五则

热门文章

  1. 程序员必知的 Python 陷阱与缺陷列表
  2. getbean方法找不到bean_iphone手机静音找不到怎么办 iphone静音找不到解决方法【图文】...
  3. python课程思路_学习python课程第二十六天
  4. 计算机辅助教育会议,子会议1:学习科学、计算机辅助合作学习、智慧教育
  5. abs函数的使用方法 oracle_SQL Server 常用函数使用方法
  6. 学计算机与学英语作文,初二英语作文(关于计算机与学习)
  7. aop springboot 传入参数_Springboot添加AOP打印请求参数
  8. 7-3 最短路径 (20 分)(分支限界+思路+详解)
  9. [剑指offer]面试题37:两个链表的第一个公共结点
  10. dptcpp 题目 2352: [信息学奥赛一本通-T1440]数的划分-dp