51Nod 1126 求递推序列的第N项 矩阵快速幂
来源:互联网 发布:手机麻将源码带房卡 编辑:程序博客网 时间:2024/05/17 16:54
矩阵快速幂
对矩阵[a,b,1,0]求n-2次幂,
因为f[1]=f[2]=1。没有f[0],所以对矩阵[a,b,1,0]求n-2次幂,
又因为进行快速幂的时候令sum=n1,减少一次运算。所以是n-3次幂
注意会产生负数的情况假如a是负数 a%b=(a%b+b)%b
#include<iostream> #include<queue> #include<vector> #include<stack> #include<algorithm>#include<cmath> #include<set>#include<map>#include<cstdio>using namespace std;typedef struct node{int num[2][2];};node cheng(node n1,node n2){node sum;for(int i=0;i<2;i++){for(int j=0;j<2;j++){sum.num[i][j]=0;for(int k=0;k<2;k++){sum.num[i][j]+=(n1.num[i][k]*n2.num[k][j])%7;sum.num[i][j]=(sum.num[i][j]%7+7)%7;}}}return sum;}int k(node n1,int len){node sum=n1;while(len){if(len&1) sum=cheng(sum,n1);n1=cheng(n1,n1);len/=2;}return sum.num[0][0]+sum.num[0][1];}int main(){int a,b,n;cin>>a>>b>>n;node n1={(a%7+7)%7,(b%7+7)%7,1,0};if(n<=2){cout<<1<<endl;return 0;}if(n==3){printf("%d",((a+b)%7+7)%7);return 0;}int ksm=k(n1,n-3);cout<<(ksm%7+7)%7;return 0;}
阅读全文
1 0
- 51nod 1126 求递推序列的第N项 (矩阵快速幂)
- 51 nod 1126 求递推序列的第N项(矩阵快速幂)
- 51nod 1126 求递推序列的第N项(矩阵快速幂、循环)
- 51nod 1126 求递推序列的第N项(矩阵快速幂)
- 51nod 1126 求递推序列的第N项 矩阵快速幂
- 51 nod 1126 求递推序列的第N项 矩阵快速幂
- 51nod 1126 求递推序列的第N项【矩阵快速幂】
- 51Nod 1126 求递推序列的第N项 矩阵快速幂
- 51nod 求递推序列的第N项(矩阵快速幂、模拟求循环长度)
- 【51nod 1126】求递推序列的第N项 【矩阵快速幂】or【枚举找循环节】
- 51Nod Problem 1126 求递推序列的第N项(构造矩阵)
- [51NOD]1126 求递推序列的第N项 [线性递推关系与矩阵乘法]
- 1126 求递推序列的第N项(51nod)
- 51nod 1126 求递推序列的第N项
- 51nod 1126 求递推序列的第N项
- 51nod 1126 求递推序列的第N项
- 51nod-【1126 求递推序列的第N项】
- 51Nod 1126 求递推序列的第N项
- PLSQL_Developer 安装配置
- 明确方向之—MYSQL DBA
- Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null objec
- 深入浅出程序化交易核心技术
- scripts(1-13) of 笨办法学Python
- 51Nod 1126 求递推序列的第N项 矩阵快速幂
- JSON数据格式
- Java中List实现类的性能分析和应用场景(基于JDK1.8)
- 2017.12.05 数据库联表查询
- Python 从入门到实践 6-1 课后习题
- 输入和输出
- url-pattern / 与 /* 的区别
- 深度神经网络全面概述:从基本概念到实际模型和硬件基础
- 策略模式