HDU3306(矩阵快速幂)
来源:互联网 发布:奥迪工程师软件 编辑:程序博客网 时间:2024/05/17 18:26
正在死磕矩阵类的题,这个题不是很难,想到构造关于
公式给我们了,直接构造矩阵就好了
code:
#include<stdio.h>#include<string.h>#include<math.h>#include<algorithm>#include<iostream>#include<string>#include <set>#include<time.h>//a&3==a%4using namespace std ;#define ll long long#define mem(a) memset(a,0,sizeof(a))const double eps = 1e-8;const int maxn = 110010;const int inf = 0x3f3f3f3f;const ll mod=10007ll;struct matrix{ ll mat[10][10];//mat[i][j]=第i行第j列 matrix() { for(int i=0;i<10;i++) { for(int j=0;j<10;j++) { mat[i][j]=0ll; } } }};void out(matrix a,int n){ for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { cout<<a.mat[i][j]<<" "; } cout<<endl; }}matrix multiply(matrix a,matrix b,int n){ matrix res; for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { for(int k=0;k<n;k++) { res.mat[i][j]+=a.mat[i][k]*b.mat[k][j]%mod; res.mat[i][j]%=mod; } } } return res;}matrix quickmi(matrix a,ll b,int n){ matrix E; matrix res; for(int i=0;i<n;i++) { E.mat[i][i]=1; res.mat[i][i]=1; } E=multiply(a,E,n); while(b>0) { if(b%2==1) { res=multiply(res,E,n); } b=b/2; E=multiply(E,E,n); } return res;}int main(){; ll a,b,c; while(cin>>a>>b>>c) { matrix sum; sum.mat[0][0]=b*b;sum.mat[0][1]=c*c;sum.mat[0][2]=2*b*c; sum.mat[1][0]=1ll; sum.mat[2][0]=b;sum.mat[2][2]=c; sum.mat[3][0]=1ll;sum.mat[3][3]=1ll; if(a==0) { cout<<1<<endl; } else if(a==1) { cout<<2<<endl; } else { matrix res=quickmi(sum,a,4); ll Res=0; for(int i=0;i<4;i++) { Res=(Res+res.mat[3][i])%mod; } Res=Res%mod; cout<<Res<<endl; } } return 0;}
阅读全文
0 0
- HDU3306 矩阵快速幂
- HDU3306(矩阵快速幂)
- hdu3306之矩阵快速幂
- hdu3306矩阵快速幂讲解
- hdu3306--Another kind of Fibonacci(矩阵快速幂)
- Another kind of Fibonacci(hdu3306)矩阵快速幂
- HDU3306(科波菲尔数列+快速幂)
- HDU3306 -- Another kind of Fibonacci 构造矩阵然后矩阵快速幂
- hdu3306
- hdu3306
- hdu3306
- HDU3306
- hdu3306 Another kind of Fibonacci 构造矩阵
- hdu3306 Another kind of Fibonacci(构造矩阵)
- 快速矩阵快速幂
- 矩阵——hdu3306 Another kind of Fibonacci
- 转移矩阵+矩阵快速幂
- 矩阵乘法 矩阵快速幂
- 远程从Mongodb 数据库导出数据为json文件
- TensorFlow教程:TensorFlow实现多层感知机
- 我的第一篇CSDN博客
- kivy 相关资源传送门
- python中元组tuple
- HDU3306(矩阵快速幂)
- 实验一顺序表的建立与操作
- 最长公共子序列
- Atom:provided path doesn't exist
- tomcat调优
- $(document).ready()和window.onload的不同
- 设计模式——简单的工厂模式
- Hive.GROUPING SETS
- Python编码和Unicode(转)