zoukankan      html  css  js  c++  java
  • 矩阵快速幂 模板

     1 #define maxn 15
     2 
     3 int n, k;    // n阶方阵的k次幂 
     4 
     5 struct matrix//定义一个结构体,方便传递值
     6 {
     7     int m[maxn][maxn];
     8 };
     9 
    10 /*
    11 mod由全局定义,mod根据需要可以省去
    12 */
    13 
    14 matrix mul(matrix a, matrix b)    //矩阵求积, 矩阵乘法 
    15 {
    16     matrix ans;
    17     for(int i = 1; i <= n; i++)
    18     {
    19         for(int j = 1; j <= n; j++)
    20         {
    21             ans.m[i][j] = 0;
    22             for(int k = 1; k <= n; k++)
    23             {
    24                 ans.m[i][j] += (a.m[i][k] * b.m[k][j]) % mod;
    25                 ans.m[i][j] %= mod;    // 这里一定要再次取模 
    26             }
    27         }
    28     }
    29     return ans;
    30 }
    31 
    32 matrix quick_pow(matrix a, int b)    //矩阵快速幂
    33 {
    34     matrix ans;
    35     for(int i = 1; i <= n; i++)
    36     {
    37         for(int j = 1; j <= n; j++)
    38         {
    39             if(i == j)
    40                 ans.m[i][j] = 1;
    41             else
    42                 ans.m[i][j] = 0;//这里要初始化为单位矩阵,类比普通快速幂这里初始化为1
    43         }
    44     }
    45     while(b != 0)//方法与普通快速幂相同,只有乘法的实现不同
    46     {
    47         if(b % 2 == 1)
    48             ans = mul(a, ans);
    49         a = mul(a, a);
    50         b /= 2;
    51     }
    52     
    53     return ans;
    54 }
  • 相关阅读:
    c函数调用过程
    查找匹配行及前后5行
    指向类成员函数的指针
    C++箴言:理解typename的两个含义
    不定参数
    定时器
    unix编译
    sed
    大脑皮层的梦工厂
    静态链接库顺序问题
  • 原文地址:https://www.cnblogs.com/FengZeng666/p/11486321.html
Copyright © 2011-2022 走看看