斐波那契数列矩阵快速幂
题意
用矩阵乘法求fibonacci数列的第n项。
Solution
矩乘入门题啊,题目把题解已经说的很清楚里= =。
矩乘其实很简单,通过自己YY或者是搜索对于一个递推公式求出它所对应的矩阵,然后套个快速幂就可以迅速求解第n项。
1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<vector> 5 #include<queue> 6 #include<cstring> 7 #define mp make_pair 8 #define pb push_back 9 #define first fi 10 #define second se 11 #define pw(x) (1ll << (x)) 12 #define sz(x) ((int)(x).size()) 13 #define all(x) (x).begin(),(x).end() 14 #define rep(i,l,r) for(int i=(l);i<(r);i++) 15 #define per(i,r,l) for(int i=(r);i>=(l);i--) 16 #define FOR(i,l,r) for(int i=(l);i<=(r);i++) 17 #define eps 1e-9 18 #define PIE acos(-1) 19 #define cl(a,b) memset(a,b,sizeof(a)) 20 #define fastio ios::sync_with_stdio(false);cin.tie(0); 21 #define lson l , mid , ls 22 #define rson mid + 1 , r , rs 23 #define ls (rt<<1) 24 #define rs (ls|1) 25 #define INF 0x3f3f3f3f 26 #define LINF 0x3f3f3f3f3f3f3f3f 27 #define freopen freopen("in.txt","r",stdin); 28 #define cfin ifstream cin("in.txt"); 29 #define lowbit(x) (x&(-x)) 30 #define sqr(a) a*a 31 #define ll long long 32 #define ull unsigned long long 33 #define vi vector<int> 34 #define pii pair<int, int> 35 #define dd(x) cout << #x << " = " << (x) << ", " 36 #define de(x) cout << #x << " = " << (x) << "\n" 37 #define endl "\n" 38 using namespace std; 39 //********************************** 40 const int mod=1e4; 41 typedef vector<vi> mat; 42 //********************************** 43 mat mul(mat& a,mat& b) 44 { 45 mat c(2,vi(2)); 46 rep(i,0,2)rep(j,0,2)rep(k,0,2) 47 c[i][j]+=(a[i][k]*b[k][j]),c[i][j]%=mod; 48 return c; 49 } 50 mat qpow(mat a,int b) 51 { 52 mat c(2,vi(2)); 53 c[0][0]=c[1][1]=1;c[1][0]=c[0][1]=0; 54 while(b){ 55 if(b&1)c=mul(c,a); 56 a=mul(a,a); 57 b>>=1; 58 } 59 return c; 60 } 61 //********************************** 62 int main() 63 { 64 int n; 65 while(cin>>n,~n){ 66 mat v(2,vi(2));v[0][0]=1;v[0][1]=1;v[1][0]=1;v[1][1]=0; 67 v=qpow(v,n); 68 cout<<v[1][0]<<endl; 69 } 70 return 0; 71 }
View Code
转载于:https://www.cnblogs.com/klaycf/p/9682980.html
斐波那契数列矩阵快速幂相关推荐
- HDU4549 M斐波那契数列(矩阵快速幂+费马小定理)
Problem Description M斐波那契数列F[n]是一种整数数列,它的定义如下: F[0] = a F[1] = b F[n] = F[n-1] * F[n-2] ( n > 1 ) ...
- HDU 4549 M斐波那契数列(矩阵快速幂费马小定理)
ps:今天和战友聊到矩阵快速幂,想到前几天学长推荐去刷矩阵专题,挑了其中唯一一道中文题,没想到越过山却被河挡住去路... 题目链接:[kuangbin带你飞]专题十九 矩阵 R - M斐波那契数列 T ...
- 奶牛家族(斐波那契数列的快速幂乘矩阵算法)
TX面试题: 已知有一头牛4年后开始生小牛,一次只能生一只,问20年后一共有多少头牛? 这种问题就是简单的递归: 这头奶牛在第四年后能不断生子直到第二十年,其子出生4年后又能不断生子-- 代码如下: ...
- YBTOJ:斐波拉契(矩阵快速幂)
文章目录 题目描述 题目描述 代码 题目描述 题目描述 关键在于如何转化为本题的题目... 设 y=(1-根号5)/2$$ 再令: A(n)=xn +++ yn 通过尝试可以发现,A其实就是一个1,3 ...
- 蓝桥杯历届试题----斐波那契(矩阵快速幂)
问题描述 斐波那契数列大家都非常熟悉.它的定义是: f(x) = 1 -. (x=1,2) f(x) = f(x-1) + f(x-2) -. (x>2) 对于给定的整数 n 和 m,我们希望求 ...
- 牛客15666 又见斐波那契(矩阵快速幂)
链接:https://ac.nowcoder.com/acm/problem/15666 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...
- [ZJOI2011]细胞——斐波那契数列+矩阵加速+dp
Description bzoj2323 Solution 题目看起来非常复杂. 本质不同的细胞这个条件显然太啰嗦, 是否有些可以挖掘的性质? 1.发现,只要第一次分裂不同,那么互相之间一定是不同的( ...
- 构造类斐波那契数列矩阵
题目:HDU4565 题意:给定正整数a,b,n,m,求的值. 其中. 分析:依据题意有,所以有结论:,尽管含有根号,可以知道等号右边是 整数.那么我们构造递推关系:,那么本方程的特征根就是:和. ...
- 又见斐波那契数列(矩阵构造+矩阵快速幂)
//补题~~~ 链接:https://ac.nowcoder.com/acm/problem/15666 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其 ...
最新文章
- Jenkins(二)
- 【C++】Visual Studio教程(七) -修改 Visual Studio
- 2009编程语言排名
- 计算机网络考试目的是什么,计算机网络基本原理考试大纲 -、课程的性质及其设置的目的与要求.doc...
- recv函数返回0_函数VLOOKUP与LOOKUP的PK,大战一触即发 Excel神技能!
- 网络流20+4题解题报告(已更前20题)
- 解决SurfaceView调用setZOrderOnTop(true)遮挡其他控件的问题
- java 访问 usb
- 软件是怎么控制硬件的?
- Windows 录音机录制电脑声音、route 双网卡设置内外网共用
- 【附源码】计算机毕业设计SSM小区宠物管理系统
- 电子设计大赛-运算放大器
- 多轴联动编程C语言,全国数控技能大赛―复杂部件造型、多轴联动编程与加工_...
- 撰写MLA格式的毕业论文,需留意下边几个文件格式标准
- 2015年电商行业十大发展趋势分析预测
- Dockerfile文件编写官方文档
- 复正弦信号、实数信号的DFT
- 无盘疑难杂症的处理和网络的设置(转)
- 信息论:数据压缩和信源编码
- 2022 新版本c++安装opencv库的简单操作教程
热门文章
- Android中怎样使用Navicat可视化查看sqllite的数据库(查看db文件)
- Android中使用Intent的Action和Data属性实现点击按钮跳转到拨打电话和发送短信
- Winform中在使用VS+svn进行协同开发时添加引用时的相对路径和绝对路径的问题
- spring框架如何调用异步方法?快进来学学吧
- 【Python】编程笔记3
- 跑步碰撞大数据,走进悦跑圈的数据“大观园”
- 到喜啦携手神策数据,大数据加速产品服务的创新整合发展
- 用户及用户组管理(week1_day4)--技术流ken
- 失战于知识付费,会员与智能硬件将助蜻蜓FM打赢下半场战争?
- Python之IO模型