矩阵快速幂

矩阵快速幂

乘法快速幂

代码

java 复制代码
// 二进制拆分 + 倍增思想
//  5 的 二进制  101 , 2 ^ 5  =  2 ^ 4  *  2;
int quickpow(int a , int n) {
    int res =1 ;
    while(n>0) {
        if((n&1) ==1) {
            res*=a;
        }
        a = a*a;
        n>>=1;
    }
    return res;
}

矩阵快速幂

只要状态转移是线性的,就能写成矩阵乘法。

代码

java 复制代码
  /**
     * 矩阵乘法
     * @param a int[][]
     * @param b int[][]
     * @return ans int[][]
     */
    public static int[][] multiply(int[][]a,int[][]b){
        int n = a.length;
        int m = b[0].length;
        int k = a[0].length;
        int [][] ans = new int[n][m];
        for(int i =0;i<n;i++){
            for(int j =0;j<m;j++){
                for(int c =0;c<k;c++){
                    ans[i][j] += a[i][c] * b[c][j];
                }
            }
        }
        return ans;
    }
    /**
     * 矩阵快速幂
     * @param matrix int[][] 必须是方阵
     * @param k int
     * @return int[][]
     */
    public static int[][] matrixPower(int[][] matrix, int k) {
        int n = matrix.length;
        int[][] res = new int[n][n];

        // 1.初始化单位矩阵
        for (int i = 0; i < n; i++) {
            res[i][i] = 1;
        }
        // 2. 快速幂计算
        while (k > 0) {
            if ((k & 1) == 1) {
                res = multiply(res, matrix);
            }
            matrix = multiply(matrix, matrix);
            k >>= 1;
        }
        return res;
    }
相关推荐
半亩码田1 分钟前
C#转Python第3.6篇:Python 的 @property 比 C# 的 get/set 更灵活
java·python·c#
zander25810 分钟前
LeetCode 300. 最长递增子序列
算法·leetcode·深度优先
老郑聊AI业财智造15 分钟前
Spring AI 技术架构与源码分析
java·人工智能·后端·spring·架构·软件工程
省长21 分钟前
别人绕过我的网关直接调用资源服务怎么办?使用 Sa-Token 解决:网关转发鉴权、RPC调用鉴权
java·后端·开源
MetaLite22 分钟前
SpringBoot异常处理-到底该转换还是继续抛-入口层与调用层不能一刀切
java·spring boot·后端
祖力5544 分钟前
Linux应用软件编程:目录IO与framebuffer
linux·运维·算法·framebuffer·目录io
名字还没想好☜1 小时前
Go 用 slices/maps 标准库泛型函数:告别手写 Contains、Sort、去重(Go 1.21)
开发语言·后端·算法·golang·go
地平线开发者1 小时前
【模型轻量化专题】深度学习模型为什么需要轻量化
算法
赵广陆1 小时前
Spring AI的聊天模型
java·人工智能·spring
IT 小阿姨(数据库)1 小时前
K8s v1.24.17 完整搭建文档(CentOS7 + containerd1.6.33 + Calico)
java·容器·kubernetes