矩阵快速幂

题目描述

矩阵乘法:

A[n*m]*B[m*k]=C[n*k];

C[i][j]=sum(A[i][1~n]+B[1~n][j])

为了便于赋值和定义,我们定义一个结构体储存矩阵:

struct Matrix{
long long m[][];
};

X*Y:

 Matrix cheng(Matrix X,Matrix Y)
{
Matrix C;
for(long long i=;i<=n;i++)
for(long long j=;j<=n;j++)
{
C.m[i][j]=;
for(long long l=;l<=n;l++)
C.m[i][j]=(C.m[i][j]+X.m[i][l]*Y.m[l][j])%MOD;
}
return C;
}

快速幂:

把k转化为二进制,

  如k=10(10)=1010(2);

  a^10=a^(2^3) * a^(2^1)=(a^8)*(a^2)

代码:

Matrix qsort(Matrix X,long long p)
{
Matrix S=E;
while(p)
{
if(p&) S=cheng(S,X);
X=cheng(X,X);
p>>=;
}
return S;
}

其中E是一个矩阵,相当于数字1,任何一个矩阵A*E=A。

当n=10时,E等于

1,0,0,0,0,0,0,0,0,0

0,1,0,0,0,0,0,0,0,0

0,0,1,0,0,0,0,0,0,0

0,0,0,1,0,0,0,0,0,0

0,0,0,0,1,0,0,0,0,0

0,0,0,0,0,1,0,0,0,0

0,0,0,0,0,0,1,0,0,0

0,0,0,0,0,0,0,1,0,0

0,0,0,0,0,0,0,0,1,0

0,0,0,0,0,0,0,0,0,1

生成矩阵E:

for(long long i=;i<=n;i++)
E.m[i][i]=;
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
long long n,k;
const long long MOD=;
struct Matrix{
long long m[][];
};
Matrix A,E,ANS;
Matrix cheng(Matrix X,Matrix Y)
{
Matrix C;
for(long long i=;i<=n;i++)
for(long long j=;j<=n;j++)
{
C.m[i][j]=;
for(long long l=;l<=n;l++)
C.m[i][j]=(C.m[i][j]+(X.m[i][l]*Y.m[l][j]))%MOD;
}
return C;
}
Matrix qsort(Matrix X,long long p)
{
Matrix S=E;
while(p)
{
if(p&) S=cheng(S,X);
X=cheng(X,X);
p>>=;
}
return S;
}
int main()
{
scanf("%lld%lld",&n,&k);
for(long long i=;i<=n;i++)
E.m[i][i]=;
for(long long i=;i<=n;i++)
for(long long j=;j<=n;j++)
scanf("%lld",&A.m[i][j]);
ANS=qsort(A,k);
for(long long i=;i<=n;i++)
{
for(long long j=;j<=n;j++)
printf("%lld ",ANS.m[i][j]);
puts("");
}
return ;
}

【洛谷P3390】矩阵快速幂的更多相关文章

  1. P3390矩阵快速幂

    题目背景 矩阵快速幂 题目描述 给定n*n的矩阵A,求A^k 输入输出格式 输入格式: 第一行,n,k 第2至n+1行,每行n个数,第i+1行第j个数表示矩阵第i行第j列的元素 输出格式: 输出A^k ...

  2. 【luogu P3390 矩阵快速幂】 模板

    题目链接:https://www.luogu.org/problemnew/show/P3390 首先要明白矩阵乘法是什么 对于矩阵A m*p  与  B p*n 的矩阵 得到C m*n 的矩阵 矩阵 ...

  3. 【洛谷】P1229快速幂

    题目链接:https://www.luogu.org/problemnew/show/P1226 题意:求b^p % m之后的结果 题解:快速幂模板 代码: #include<iostream& ...

  4. 模板【洛谷P3390】 【模板】矩阵快速幂

    P3390 [模板]矩阵快速幂 题目描述 给定n*n的矩阵A,求A^k 矩阵A的大小为n×m,B的大小为n×k,设C=A×B 则\(C_{i,j}=\sum\limits_{k=1}^{n}A_{i, ...

  5. 洛谷P3758/BZOJ4887 [TJOI2017] 可乐 [矩阵快速幂]

    洛谷传送门,BZOJ传送门 可乐 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 299  Solved: 207 Description 加里敦星球的人 ...

  6. 【模板】矩阵快速幂 洛谷P2233 [HNOI2002]公交车路线

    P2233 [HNOI2002]公交车路线 题目背景 在长沙城新建的环城公路上一共有8个公交站,分别为A.B.C.D.E.F.G.H.公共汽车只能够在相邻的两个公交站之间运行,因此你从某一个公交站到另 ...

  7. 3990 [模板]矩阵快速幂 洛谷luogu

    题目背景 矩阵快速幂 题目描述 给定n*n的矩阵A,求A^k 输入输出格式 输入格式: 第一行,n,k 第2至n+1行,每行n个数,第i+1行第j个数表示矩阵第i行第j列的元素 输出格式: 输出A^k ...

  8. 洛谷P1349 广义斐波那契数列(矩阵快速幂)

    P1349 广义斐波那契数列 https://www.luogu.org/problemnew/show/P1349 题目描述 广义的斐波那契数列是指形如an=p*an-1+q*an-2的数列.今给定 ...

  9. 洛谷P1962 斐波那契数列(矩阵快速幂)

    题目背景 大家都知道,斐波那契数列是满足如下性质的一个数列: • f(1) = 1 • f(2) = 1 • f(n) = f(n-1) + f(n-2) (n ≥ 2 且 n 为整数) 题目描述 请 ...

随机推荐

  1. vue 中使用driver.js来进行页面分步引导

    Driver.js 推荐15款最佳的 jQuery 分步引导插件 11 个超棒的 jQuery 分步指引插件

  2. SQL Server 硬件和软件要求

    1. 2.

  3. 还是畅通工程(prim和kruskal)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1233 还是畅通工程 Time Limit: 4000/2000 MS (Java/Others)    ...

  4. 牛客网Java刷题知识点之什么是单例模式?解决了什么问题?饿汉式单例(开发时常用)、懒汉式单例(面试时常用)、单例设计模式的内存图解

    不多说,直接上干货! 什么是单例设计模式? 解决的问题:可以保证一个类在内存中的对象唯一性,必须对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性. 如何保证? 1.不允许其他程序用new ...

  5. Unity C# string 与byte 直接的转换

    指纹模版的转换 可还原字节数组byt string str = Convert.ToBase64String(bytes); byte[] bytes = Convert.FromBase64Stri ...

  6. mysql+C#

    MySqlParameter[] prams = ]; prams[] = new MySqlParameter("@personindex", personindex); pra ...

  7. 数据库存储的数据(如果是<p>数据</p>或者<img src="" />等格式)(asp.net)

    1.用方法@Html.Raw() @Html.Raw(数据库提取的数据放在这里)

  8. #CSS的盒子模型、元素类型

    CSS的盒子模型.元素类型   本文首先介绍了CSS元素的统一内部结构模型,盒子模型:然后介绍了CSS元素基于不同分类标准定义的元素类型,包括基于不同内容设置方式定义的replaced元素和non-r ...

  9. angular2-搭建环境

    npm  模块将被下载安装到[全局目录]中.[全局目录]通过 npm config set prefix "目录路径" 来设置.通过 npm config get prefix 来 ...

  10. 高仿饿了么mock本地数据

    未使用router新版webpack.dev.conf.js配置本地数据访问:// 引入express 模块 const express = require('express') // 创建expre ...