hdu 1005 根据递推公式构造矩阵 ( 矩阵快速幂)
f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7.
Sample Input
1 1 3 //a b n
1 2 10
0 0 0
Sample Output
2
5
矩阵A * 矩阵B = 矩阵C
a b f(n-1) f(n)
1 0 f(n-2) f(n-1)
1 # include <iostream> 2 # include <cstdio> 3 # include <algorithm> 4 # include <map> 5 # include <cmath> 6 # define LL long long 7 using namespace std ; 8 9 const int MOD = 7 ; 10 11 struct Matrix 12 { 13 int mat[2][2]; 14 }; 15 16 Matrix mul(Matrix a,Matrix b) //矩阵乘法 17 { 18 Matrix c; 19 for(int i=0;i<2;i++) 20 for(int j=0;j<2;j++) 21 { 22 c.mat[i][j]=0; 23 for(int k=0;k<2;k++) 24 { 25 c.mat[i][j]=(c.mat[i][j] + a.mat[i][k]*b.mat[k][j])%(MOD); 26 } 27 } 28 return c; 29 } 30 Matrix pow_M(Matrix a,int k) //矩阵快速幂 31 { 32 Matrix ans; 33 memset(ans.mat,0,sizeof(ans.mat)); 34 for (int i=0;i<2;i++) 35 ans.mat[i][i]=1; 36 Matrix temp=a; 37 while(k) 38 { 39 if(k&1)ans=mul(ans,temp); 40 temp=mul(temp,temp); 41 k>>=1; 42 } 43 return ans; 44 } 45 46 47 48 int main () 49 { 50 // freopen("in.txt","r",stdin) ; 51 int a,b,n; 52 while(scanf("%d%d%d" , &a,&b,&n) != EOF) 53 { 54 if (a==0 && b==0 && n==0) 55 break ; 56 if (n <= 2) 57 { 58 printf("1\n") ; 59 continue ; 60 } 61 Matrix t ; 62 t.mat[0][0] = a ; 63 t.mat[0][1] = b ; 64 t.mat[1][0] = 1 ; 65 t.mat[1][1] = 0 ; 66 Matrix ans = pow_M(t,n-2) ; 67 printf("%d\n" , (ans.mat[0][0] + ans.mat[0][1])%MOD) ; 68 69 } 70 71 72 return 0 ; 73 }
View Code
转载于:https://www.cnblogs.com/mengchunchen/p/4535624.html
hdu 1005 根据递推公式构造矩阵 ( 矩阵快速幂)相关推荐
- 根据递推公式构造系数矩阵用于快速幂
简单的例子 Fibonacci数列 考虑 Fibonacci Fibonacci数列, F(n)=F(n−1)+F(n−2) F(n)=F(n-1)+F(n-2) 将右边两项看做是一个列向量的形式,令 ...
- HDU 4565So Easy!2012长沙邀请赛A题(共轭构造+矩阵的快速幂)
So Easy! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S ...
- 求解斐波那契第n项的几种解法(含矩阵乘法+快速幂) Python实现
斐波那契数列 首先我们来定义一下斐波那契数列: f(n)={0n = 01n = 1f(n−1)+f(n−2)n > 1f(n)= \begin{cases} 0 & \text {n ...
- bzoj 4417: [Shoi2013]超级跳马(矩阵合并+快速幂)
4417: [Shoi2013]超级跳马 Time Limit: 10 Sec Memory Limit: 256 MB Submit: 410 Solved: 252 [Submit][Stat ...
- 循环矩阵的快速幂(bzoj 2510: 弱题)
2510: 弱题 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 408 Solved: 218 [Submit][Status][Discuss] ...
- 【BZOJ 2323】 2323: [ZJOI2011]细胞 (DP+矩阵乘法+快速幂*)
2323: [ZJOI2011]细胞 Description 2222年,人类在银河系外的某颗星球上发现了生命,并且携带了一个细胞回到了地球.经过反复研究,人类已经完全掌握了这类细胞的发展规律: 这种 ...
- [矩阵乘法/快速幂专题]Arc of Dream,Recursive sequence,233 Matrix,Training little cats
矩阵快速幂习题 复习矩阵乘法及快速幂模板 乘法模板 快速幂模板 T1:Arc of Dream 题目 题解 code T2:Recursive sequence 题目 题解 code T3:233 M ...
- [BZOJ3240][Noi2013]矩阵游戏 快速幂
当我知道这题矩阵可以用费马小定理搞快速幂的时候 我眼泪都要落下来了QAQ 首先求一发通项F[1][1]->F[2][1]的通项 然后写成A+B的形式 若a != 1 A = (a^(m-1))* ...
- ZCMU-1618-骨牌覆盖(矩阵乘法+快速幂)
1618: 骨牌覆盖1 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 264 Solved: 124 [Submit][Status][Web Bo ...
- Xn数列(矩阵乘法+快速幂+慢速乘法)
Xn数列 题目描述: 给你6个数,m, a, c, x0, n, g Xn+1 = ( aXn + c ) mod m,求Xn m, a, c, x0, n, g<=10^18 输入描述: 一行 ...
最新文章
- RabbitMQ入门之安装配置与简单实例
- Vue中的前后台交互
- Hibernate 事物隔离级别 深入探究
- 张平文院士:展示计算数学的魅力
- 20171129-构建之法:现代软件工程-阅读笔记
- winpe加载raid_winpe集成raid驱动~
- VS Code下载安装教程
- 基于Tiny6410的LCD与一线触屏移植
- 用Java做一个基于Swing的多人网络聊天室
- 重拾C语言-摄氏度与华氏度相互转换
- 在线java编译器 api_代码在线编译器(上)- 编辑及编译
- 设备管理是对计算机什么的系统管理,什么是指对计算机系统所有的外部设备的管理...
- 识别图中文字python_python识别图片中文字的方法
- [论文阅读] (26) 基于Excel可视化分析的论文实验图表绘制总结——以电影市场为例
- IOS HTTPS 服务器信任评估
- 环信即时通讯云获得A轮融资 开启 “高品质更好用”IM时代
- Appium笔记1--基于python windows下的环境搭建
- 给博客添加rss订阅
- 新手21天学java后端-day4-oracle数据库
- Jupyter Notebook基础知识总结
热门文章
- 为什么是GCN(转)
- R-FCN算法的Caffe实现
- 机器学习(六)——降维处理原理
- 机器学习最简单算法——KNN算法(K-Nearest Neighbor)
- 图像梯度-Sobel算子
- javascript中常用的对象创建方式有哪些?
- qt for python对比pyqt_PyQt4和electron的第二轮对比
- kubernetes视频教程笔记 (23)-存储-Volume
- 浅析bin,lib,src的区别
- 2021年四川省卫生副高考试成绩查询时间,2021年四川卫生资格成绩查询时间及查分入口【6月4日起】...