hdu 3306 矩阵解决线性递推
2013-04-19 20:47
316 查看
#include<stdio.h>#include<string.h>#include<algorithm>#define mod 10007using namespace std;struct Node{int map[8][8];};Node operator *(Node a,Node b){Node c;memset(c.map,0,sizeof(c.map));for(int i=0;i<4;i++){for(int j=0;j<4;j++){for(int k=0;k<4;k++){c.map[i][j]+=(a.map[i][k]*b.map[k][j])%mod;}}}return c;}Node operator ^(Node a,int k){Node c;memset(c.map,0,sizeof(c.map));for(int i=0;i<4;i++)for(int j=0;j<4;j++)c.map[i][j]=(i==j);while(k){if(k&1)c=c*a;a=a*a;k>>=1;}return c;}long long n, m , x , y;int main(){while(scanf("%lld%lld%lld",&n,&x,&y)!=EOF){Node a;int sum=0;memset(a.map,0,sizeof(a.map));a.map[0][0] = a.map[2][1] = 1;a.map[0][1] = a.map[1][1] = x*x%mod;a.map[0][2] = a.map[1][2] = y*y%mod;a.map[0][3] = a.map[1][3] = 2*x*y%mod;a.map[3][1] = x%mod;a.map[3][3] = y%mod;a=a^(n-1);sum+=(2*a.map[0][0]%mod+a.map[0][1]%mod+a.map[0][2]%mod+a.map[0][3]%mod) %mod;printf("%dn",sum);}}
相关文章推荐
- ICPC 沈阳站C题 HDU 5950 Recursive sequence 矩阵快速幂 线性递推
- 构造矩阵解决线性递推问题
- hdu 5950 矩阵加速递推
- HDU 4914 Linear recursive sequence(矩阵乘法递推的优化)
- hdu 2842 Chinese Rings(矩阵乘法+递推)
- Reading comprehension HDU - 4990(矩阵快速幂 递推)
- hdu1588---Gauss Fibonacci(矩阵,线性递推)
- 【线性递推DP】hdu 5550
- HDU - 4035(概率dp 用待定系数法解决递推依赖)
- hdu 3306 Another kind of Fibonacci 矩阵快速幂
- POJ 3734 Blocks 线性递推 矩阵快速幂
- HDU 2157 How many ways??(简单线性DP | | 矩阵快速幂)
- HDU 3306 Another kind of Fibonacci(快速幂矩阵)
- hdu 2842 Chinese Rings(矩阵递推)
- 矩阵快速幂在常系数线性递推关系中的应用
- HDU 3306 Another kind of Fibonacci(矩阵快速幂)
- hdu 1757 A Simple Math Problem(矩阵优化递推)
- 矩阵乘法和二分求阶乘 解线性递推问题(大数据的递推)
- HDU 2157 How many ways??(简单线性DP | | 矩阵快速幂)
- HDU 4686 Arc of Dream(矩阵加速递推)