蒟阵P3390 模板矩阵快速幂

Posted lcezych

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了蒟阵P3390 模板矩阵快速幂相关的知识,希望对你有一定的参考价值。

 

技术图片

技术图片

代码如下:

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstdlib>
 4 #include<cmath>
 5 #include<cstring>
 6 #include<string>
 7 #include<algorithm>
 8 #include<time.h>
 9 using namespace std;
10 #define mod 1000000007
11 #define ll long long 
12 ll read(){
13     ll ans=0;
14     char last= ,ch=getchar();
15     while(ch<0 || ch>9)last=ch,ch=getchar();
16     while(ch>=0 && ch<=9)ans=ans*10+ch-0,ch=getchar();
17     if(last==-)ans=-ans;
18     return ans;
19 }//快读 
20 struct matrix{
21     ll m[105][105];
22 };//定义蒟阵 
23 ll n,k;
24 matrix a,c,e;
25 matrix cheng(matrix x,matrix y)//定义蒟阵乘法 
26 {
27     matrix c;
28     for(ll i=1;i<=n;i++)
29         for(ll j=1;j<=n;j++)
30             c.m[i][j]=0;//初始化0 
31     for(int i=1;i<=n;i++)
32       for(int j=1;j<=n;j++)
33         for(int k=1;k<=n;k++)
34         {
35             c.m[i][j]=c.m[i][j]%mod+x.m[i][k]*y.m[k][j]%mod;//按照定义计算喽 
36         }
37     return c;
38 }
39 matrix pow(matrix x,ll y)//定义蒟阵快速幂(注意要用蒟阵的乘法,其他相同) 
40 {
41     matrix ans=e;
42     while(y)
43     {
44         if(y&1)
45         {
46             ans=cheng(ans,x);
47         }
48         x=cheng(x,x);
49         y>>=1;
50     }
51     return ans;
52 }
53 int main()
54 {
55     n=read(),k=read();
56     for(ll i=1;i<=n;i++)
57         e.m[i][i]=1;//单位蒟阵 
58     for(ll i=1;i<=n;i++)
59         for(ll j=1;j<=n;j++)
60         {
61             a.m[i][j]=read();//读入 
62         }
63     matrix ans=pow(a,k);
64     for(ll i=1;i<=n;i++)
65     {
66         for(ll j=1;j<=n;j++)
67         {
68             cout<<ans.m[i][j]%mod<<" ";
69         }
70         cout<<endl;
71     }    
72     return 0;//结束喽 
73 }

如果要写蒟阵乘法的话,稍微修改一下就可以了:

int main()
{
    for(int i=1;i<=m;i++)
        for(int j=1;i<=n;j++)
        {
            c[i][j]=0;
            for(int k=1;i<=p;k++)
                c[i][j]+=a[i][k]*b[k][j];
        }
 } 

 

以上是关于蒟阵P3390 模板矩阵快速幂的主要内容,如果未能解决你的问题,请参考以下文章

矩阵乘法 洛谷 P3390模板矩阵快速幂

Luogu P3390 模板矩阵快速幂&&P1939 模板矩阵加速(数列)

P3390 模板矩阵快速幂

P3390 模板矩阵快速幂

洛谷 P3390 模板矩阵快速幂

洛谷P3390 模板矩阵快速幂