`
digiter
  • 浏览: 120389 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

矩阵快速幂

    博客分类:
  • ICPC
阅读更多
typedef LL matrix[55][55];

void ident(int size, matrix x)
{
    for (int i = 0; i < size; ++i)
        for (int j = 0; j < size; ++j)
            x[i][j] = (i == j ? 1 : 0);
}
void copy(int size, matrix x, matrix y)
{
    for (int i = 0; i < size; ++i)
        for (int j = 0; j < size; ++j)
            y[i][j] = x[i][j];
}
void mutiply(int size, matrix _x, matrix _y, matrix z)
{
    matrix x, y;
    copy(size, _x, x);
    copy(size, _y, y);
    for (int i = 0; i < size; ++i)
        for (int j = 0; j < size; ++j) {
            z[i][j] = 0;
            for (int k = 0; k < size; ++k)
                z[i][j] = (z[i][j] + (int64)x[i][k] * y[k][j]) % M;
        }
}

void power(int size, matrix _x, LL n, matrix y)
{
    matrix x, r;
    copy(size, _x, x);
    ident(size, r);
    while (n) {
        if (n & 1) mutiply(size, r, x, r);
        n >>= 1;
        if (n == 0) break;
        mutiply(size, x, x, x);
    }
    copy(size, r, y);
}

分享到:
评论

相关推荐

    yxy版c++教程 浅谈矩阵快速幂

    矩阵快速幂与C++实现 矩阵快速幂是一种高效的算法,用于计算矩阵的幂运算。该算法基于二进制表示法,通过将幂运算分解为小幂运算,从而大大减少了计算次数。在C++中,矩阵快速幂可以通过模板实现,提高了计算效率。...

    ACM模板——矩阵快速幂

    矩阵快速幂的模板,需要自己根据实际题目更改矩阵大小和数据类型,以免WA和TLE。经过矩阵乘法上的稀疏矩阵优化和int64的乘法取模幂优化,效率应该比较高。视情况使用mult()函数或直接使用乘法。代码中每个函数有注释...

    矩阵快速幂_矩阵快速幂_

    矩阵快速幂是一种高效的算法,主要用于解决大整数的幂运算问题。在计算机科学,特别是算法竞赛和数值计算中,它有着广泛的应用。本算法的核心思想是利用矩阵乘法的结合律和分配律来减少计算次数,从而提高计算效率。...

    快速幂和矩阵快速幂1

    快速幂和矩阵快速幂 快速幂是计算 x 的 n 次幂的优化算法,避免了重复计算和溢出错误。矩阵快速幂是矩阵乘法的优化算法,用于计算矩阵的幂。 快速幂算法的实现可以使用循环和位运算来实现。例如,函数 fpowx(x, n)...

    斐波那契矩阵快速幂.cpp

    斐波那契矩阵快速幂模版

    一文彻底搞懂快速幂(原理实现、矩阵快速幂)

    在本文中,我们将深入探讨快速幂的原理,以及其在矩阵运算中的应用——矩阵快速幂。 快速幂算法的核心在于二进制分解。对于一个大整数n,我们可以通过将其转换为二进制表示,然后逐位处理,来计算a^n。例如,如果n=...

    并行矩阵快速幂计算.pptx

    并行矩阵快速幂计算是一种高效的计算方法,广泛应用于多种领域,包括但不限于图像处理、信号处理、机器学习等。本文将深入探讨并行矩阵快速幂计算的相关知识点,包括其原理、Strassen算法及Winograd算法的应用优势、...

    一文彻底搞懂快速幂(原理实现、矩阵快速幂).pdf

    对于一个给定的 n×n 矩阵 A 和一个整数 n,矩阵快速幂可以高效地计算出 A 的 n 次方。基本思想是将矩阵的乘法转化为幂运算,利用矩阵乘法的结合律和分配律,将指数的二进制表示与矩阵乘法对应起来。 矩阵快速幂的...

    线性代数- 矩阵快速幂.rar

    矩阵快速幂是线性代数中的一个高效算法,主要用于解决矩阵的快速乘法和幂运算问题。这个算法是基于分治策略,极大地提高了计算效率,尤其是在处理大尺寸矩阵时。 矩阵快速幂的基本思想是将矩阵的乘法和幂运算转化为...

    [宫水三叶的刷题日记]:矩阵快速幂1

    【矩阵快速幂】是计算机科学中一种高效的算法,主要用于处理涉及矩阵乘法的问题。它利用了幂运算的性质,通过二进制分解来减少运算次数,大大提高了计算效率。矩阵快速幂通常应用于解决动态规划问题,例如求解线性...

    矩阵快速幂求解斐波那契

    矩阵快速幂 幂又称乘方。表示一个数字乘若干次的形式,如n个a相乘的幂为a^n ,或称a^n为a的n次幂。a称为幂的底数,n称为幂的指数。 快速幂的思路就是:设A为矩阵,求A的N次方,N很大。例如:A的9次方 A^9 = A*A*A...

    算法讲解098【必备】快速幂、矩阵快速幂与两类问题.pptx

    算法讲解098【必备】快速幂、矩阵快速幂与两类问题

    矩阵快速幂套路模板.cpp

    矩阵快速幂套路模板.cpp

    矩阵乘法必用算法快速幂基础程序pascal

    矩阵快速幂算法是快速幂算法的一种扩展,主要用于计算矩阵的幂。其基本思路与快速幂类似,但将标量的乘法替换为矩阵乘法,将标量的平方替换为矩阵的平方。 #### 示例代码解析 给定的 Pascal 代码实现了一个简单的...

    二分三分快速幂矩阵快速幂.pptx

    技术文档分享,免费获取请私信博主。

    矩阵快速幂详细讲解-bybyby

    喝了负负负负负负负 喝了负负负负负负负 喝了负负负负负负负 喝了负负负负负负负 喝了负负负负负负负

    斐波那契数列java代码 FibonacciProblem

    包括递归版、迭代版、矩阵快速幂版的各种斐波那契数列的java解决方法。 包括递归版、迭代版、矩阵快速幂版的各种斐波那契数列的java解决方法。 包括递归版、迭代版、矩阵快速幂版的各种斐波那契数列的java解决方法。...

    快速幂模板讲解和快速幂代码

    在讲解快速幂之前,让我们先来思考一个问题:7的10次方,怎样算比较快?...这次的讲解就到这里了,希望大家对快速幂能有所了解,快速幂还包涵矩阵快速幂,快速幂的代码是需要背的,如果要熟练的话就只能多背!

    快速幂算法详解.zip

    在实际应用中,快速幂常用于计算斐波那契数列、最大公约数(GCD)、欧几里得最小公倍数(LCM)、矩阵快速幂等问题。例如,在计算斐波那契数Fibonacci(n)时,可以利用矩阵快速幂将时间复杂度降低到O(log n)。 此外,...

Global site tag (gtag.js) - Google Analytics