zoukankan      html  css  js  c++  java
  • 51Nod 1242 斐波那契数列的第N项(矩阵快速幂)

     1 #include <iostream>
     2 #include <algorithm>
     3 using namespace std;
     4 
     5 typedef long long LL;
     6 const int maxn = 2;
     7 const LL m = 1000000009;
     8 
     9 struct Matrix
    10 {
    11     LL v[maxn][maxn];
    12 };
    13 
    14 //矩阵间的乘法
    15 Matrix matrix_mul(Matrix A, Matrix B){
    16     Matrix ans;
    17     for (int i = 0; i < maxn; i++){
    18         for (int j = 0; j < maxn; j++){
    19             ans.v[i][j] = 0;
    20             for (int k = 0; k < maxn; k++){
    21                 ans.v[i][j] += (A.v[i][k] * B.v[k][j]) % m;
    22             }
    23             ans.v[i][j] %= m;
    24         }
    25     }
    26     return ans;
    27 }
    28 
    29 Matrix matrix_pow(Matrix C, LL n){
    30     Matrix ans = { 1, 0, 0, 1 };
    31     while (n){
    32         if (n & 1){
    33             ans = matrix_mul(ans, C);
    34         }
    35         C = matrix_mul(C, C);
    36         n >>= 1;
    37     }
    38     return ans;
    39 }
    40 
    41 int main(){
    42     ios::sync_with_stdio(false);
    43 
    44     LL n;
    45     cin >> n;
    46     Matrix e = { 1, 0, 1, 0 };
    47     Matrix ee = { 1, 1, 1, 0 };
    48     Matrix ans = matrix_pow(ee, n - 1);
    49     ans = matrix_mul(e, ans);
    50     cout << ans.v[0][0] << endl;
    51     //system("pause");
    52     return 0;
    53 }
  • 相关阅读:
    java多线程2-总结
    java多线程1-生产者与消费者
    jedis中的两组方法
    理解socket的阻塞
    java设计模式5-命令模式
    我的BIOS
    java设计模式4-装饰者模式
    java设计模式3-单例模式
    android四大组件
    android:theme
  • 原文地址:https://www.cnblogs.com/ouyang_wsgwz/p/8858399.html
Copyright © 2011-2022 走看看