斐波那契数列的第N项
1 #include <bits/stdc++.h> 2 #define _xx ios_base::sync_with_stdio(0);cin.tie(0); 3 using namespace std; 4 typedef long long ll; 5 const ll p = 1000000009ll; 6 struct node 7 { 8 ll data[2][2]; 9 }; 10 node operator * (const node& t1, const node& t2) 11 { 12 node ans; 13 for(int i = 0; i < 2; i++) 14 { 15 for(int j = 0; j < 2; j++) 16 { 17 ans.data[i][j] = 0; 18 for(int k = 0; k < 2; k++) 19 ans.data[i][j] += t1.data[i][k]*t2.data[k][j]; 20 ans.data[i][j] %= p; 21 } 22 } 23 return ans; 24 } 25 node operator % (const node& t1, const ll& p) 26 { 27 node ans; 28 for(int i = 0; i < 2; i++) 29 for(int j = 0; j < 2; j++) 30 ans.data[i][j] = t1.data[i][j]%p; 31 return ans; 32 } 33 node fastm(node a, ll b) 34 { 35 node ans; 36 for(int i = 0; i < 2; i++) 37 for(int j = 0; j < 2; j++) 38 if(i == j) ans.data[i][j] = 1; 39 else ans.data[i][j] = 0; 40 while(b) 41 { 42 if(b%2 == 1) 43 { 44 ans = ans*a; 45 ans = ans%p; 46 } 47 a = a*a; 48 a = a%p; 49 b /= 2; 50 } 51 return ans; 52 } 53 int main() 54 {_xx 55 ll n; 56 cin >> n; 57 if(n == 0) cout << 0 << endl; 58 else if(n == 1) cout << 1 << endl; 59 else 60 { 61 node a, b; 62 for(int i = 0; i < 2; i++) 63 for(int j = 0; j < 2; j++) 64 b.data[i][j] = a.data[i][j] = 0; 65 a.data[1][0] = a.data[2][0] = 1; 66 b.data[0][1] = b.data[1][0] = b.data[1][1] = 1; 67 b = fastm(b, n - 1); 68 a = b*a; 69 cout << a.data[1][0]%p << endl; 70 } 71 return 0; 72 }
View Code
转载于:https://www.cnblogs.com/NWUACM/p/6640824.html
斐波那契数列的第N项相关推荐
- 用递归法计算斐波那契数列的第n项
斐波纳契数列(Fibonacci Sequence)又称黄金分割数列,指的是这样一个数列:1.1.2.3.5.8.13.21.--在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1, ...
- 斐波那契数列的前n项值
Description 输入n,求斐波那契数列前n项的值.斐波那契数列规律如下:1, 1, 2, 3, 5, 8, 13,21, 34,55-,从第三项开始,每一项都是前面两项的和. Input 输入 ...
- Java - 用数组求出斐波那契数列的前20项值
斐波那契数列 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为" ...
- 输出斐波那契数列的第n项
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0).n<=39 1. 递归 public class Solution {public int ...
- python斐波那契数列第四十项_科学网—不死神兔的繁衍生息——神奇的斐波那契数列 - 霍开拓的博文...
不死神兔的繁衍生息--神奇的斐波那契数列 • 故事得从西元1202年说起,话说有一位意大利青年,名叫斐波那契.在他的一部著作中提出了一个有趣的问题:假设一对刚出生的小兔一个月后就能长成大兔,再过一个月 ...
- 由递推关系式用差分方程的方法得到通项公式实现求斐波那契数列的第n项;迭代、递归、栈、差分方程之间的本质联系以及由推广的迭代法解决“变态青蛙跳台阶”问题;汉诺塔问题的数字特征以及用递归解决的原理推导。
最近几天在研究算法中一个比较基础且突出的问题,就是关于"递推关系式.递归.迭代.序列前k项和"之间的区别与联系. 一.斐波那契数列与差分方程 首先我们考察一个经典的算法,求斐波那契 ...
- python斐波那契数列前20项_Python初学者笔记:打印出斐波那契数列的前10项
问题:斐波那契数列(意大利语: Successione di Fibonacci),又称黄金分割数列.费波那西数列.费波拿契数.费氏数列,指的是这样一个数列:0.1.1.2.3.5.8.13.21.- ...
- 斐波那契数列——输出斐波那契数列的第n项
**斐波那契数列有两种形式 1.从0开始 0 1 1 2 3 5 8........ 2.从1开始 1 1 2 3 5 8 13......... 第一二项固定,后面一项等于前面两项的和. *要输出 ...
- 一文解决斐波那契数列求前n项和;和求第n个数是多少的问题;斐波那契数列(Fibonacci)又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……
题目:斐波那契数列(Fibonacci)又称黄金分割数列,指的是这样一个数列:0.1.1.2.3.5.8.13.21.34.--在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)= 0,F(1) ...
- 编程求斐波那契数列的第n项和前n项之和。
编写程序求斐波那契数列的第n项和前n项之和.斐波那契数列是形如 0, 1, 1, 2, 3, 5, 8, 13, ... 其通项为: F[0]=0 F[1]=1 F[n]=F[n-1]+F[n-2] ...
最新文章
- SQL 语句中 where 条件后 写上1=1 是什么意思
- 极速理解设计模式系列:23.装饰器模式(Decorator Pattern)
- 一个学机械的毕业生令中国人无法安眠的帖子
- Github标星5.4k+:常见NLP模型的代码实现(基于TensorFlow和PyTorch)
- 分布式事务——TCC 原理
- FPGA浮点数定点化
- [转载]十四步实现拥有强大AI的五子棋游戏
- SAP License:O2O模式的衡量标准是什么?
- Hibernate初次搭建与第一个测试例子
- OGRE 1.7.2 [Cthugha] 编译方法
- 【转】.NET对象序列化2
- 使用Junit对Android应用进行单元测试
- Linux内存从0到1学习笔记(7.3,用户空间虚拟内存之内存映射)
- 转载标明出处用英语_转载怎么注明出处
- iOS开发中使用代码控制横竖屏的切换
- 轻松掌握Logstash的grok匹配
- MySQL数据库的查询语句的应用
- pandas笔记之分列
- ImagePicker
- 中心移动平均_移动流量资费再降20%以上!
热门文章
- jbpm hibernate.cfg.xml 连接mysql配置_hibernate.cfg.xml文件连接mySql、Oracle、SqlServer配置...
- farcry5服务器不稳定,孤岛惊魂5玩起来很卡怎么办 远哭5游戏卡顿解决办法
- cuda对应pytorh安装
- Caffe各版本与源码全透析
- 数据集中异常值的处理之lof,iforest算法
- 机器学习(二)——贝叶斯算法
- html5移动端转盘,基于zepto适合移动端的幸运大转盘插件
- vba commondialog控件添加不上_MyVBA加载宏——添加自定义菜单03——功能分析
- 结尾匹配_2.nginx的server_name匹配顺序
- 适配器模式之备忘录模式