HDU1588 Gauss Fibonacci 矩阵应用
2011-12-29 20:24
260 查看
/* 由f(n)=f(n-1)+f(n-2)构造矩阵 令 Fn(1,2) = |f(n) f(n-1)| A(2 2) = |1 1| |1 0| F1(1 2) = |1 0| Fn = F(n-1) * A = F1 * A ^ (n-1) 代入n = g(i) = k * i + b 得:Fn = F1 * A ^ (k * i + b - 1) 1)b > 1 Fn = F1 * A^(b-1) * (A^k)^i Sum(Fn) = F1 * A^(b-1) * Sum((A^k)^i) 2)b = 1 Fn = F1 * (A^k)^i Sum(Fn) = F1 * Sum((A^k)^i) 3)b = 0 Fn = F1 * A^(k-1) * (A^k)^i------------------n = n - 1 Sum(Fn) = F1 * A^(k-1) * Sum((A^k)^i)--------n = n - 1 其中Sum((A^k)^i)用solve进行二分求和 */ #include "Mat.h" #include <iostream> using namespace std; int main() { Mat A(2, 2), F1(1, 2), e(2, 2), ans(1, 2), temp(2, 2); int b, n, k; while(cin>>k>>b>>n>>mod) { //全1矩阵 A.clear(2);A.s[1][1] = 0; F1.clear(1); e.clear(1); ans.clear(); temp = A; if(b > 1) { temp.Er_work(b-1); F1.Multiply(temp); } else if(b == 0) { n--; temp.Er_work(k-1); F1.Multiply(temp); } A.Er_work(k); A.solve(n-1); A.Add(e); F1.Multiply(A); printf("%I64d\n",F1.s[0][0]); } return 0; }
相关文章推荐
- HDU1588 Gauss Fibonacci 矩阵应用
- hdu1588---Gauss Fibonacci(矩阵,线性递推)
- 矩阵乘法的应用(hdu1575,hdu1588,poj3070,poj3233,poj3613)
- hdu1588 Gauss Fibonacci 矩阵快速幂
- hdu1588 Gauss Fibonacci (矩阵快速幂)
- hdu1588 Gauss Fibonacci 矩阵快速幂
- HDU1588-Gauss Fibonacci(矩阵快速幂+等比数列二分求和)
- hdu1588 Gauss Fibonacci(矩阵快速幂+二分求矩阵等比和)
- HDU1588 Gauss Fibonacci (矩阵快速幂+等比数列二分求和)
- HDU1588-Gauss Fibonacci(矩阵高速幂+等比数列二分求和)
- hdu1588---Gauss Fibonacci(矩阵,线性复发)
- 【转】 矩阵分解方法及 在推荐系统中的应用
- 9 对称矩阵压缩储存的实现与应用
- [再寄小读者之数学篇](2014-11-14 矩阵的应用: 数论)
- 第九周项目3-稀疏矩阵的三元组表示的实现和应用(2)
- 【矩阵应用】
- 第9周项目2-(1)对称矩阵压缩存储的实现与应用
- 矩阵分解在推荐系统的应用
- 八周 1 3 对矩阵的压缩存储的实现与应用
- 第八周项目3对称矩阵压缩存储的实现与应用(3)