• 矩阵快速幂


    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1113

    这个题因为m比较大,所以不能递归求解,需要换成循环的形式.

     1 #include <cstdio>
     2 typedef long long ll;
     3 const int mod = 1e9+7;
     4 struct Mat
     5 {
     6     ll matrix[100][100];
     7 };
     8 
     9 int n,m;
    10 
    11 Mat mul(Mat a,Mat b)
    12 {
    13     Mat c;
    14     for(int i=0;i<n;i++)
    15         for(int j=0;j<n;j++)
    16         {
    17             c.matrix[i][j]=0;
    18             for(int k=0;k<n;k++)
    19             {
    20                 c.matrix[i][j]+=(a.matrix[i][k]*b.matrix[k][j])%mod;
    21             }
    22             c.matrix[i][j]%=mod;
    23         }
    24     return c;
    25 }
    26 Mat mat;
    27 Mat solve(int m)
    28 {
    29     Mat mt=mat;
    30     m--;
    31     while(m)
    32     {
    33         if(m&1)
    34         {
    35             mt=mul(mat,mt);
    36             m--;
    37         }
    38         mat=mul(mat,mat);
    39         m/=2;
    40     }
    41     return mt;
    42 }
    43 int main()
    44 {
    45     //freopen("a.txt","r",stdin);
    46     int x;
    47     Mat a,b,c;
    48     scanf("%d%d",&n,&m);
    49     for(int i=0;i<n;i++)
    50         for(int j=0;j<n;j++)
    51         {
    52             scanf("%d",&x);
    53             a.matrix[i][j]=x;
    54         }
    55     mat=a;
    56     /*for(int i=0;i<n;i++)
    57     {
    58         for(int j=0;j<n;j++)
    59             printf("%d ",mt.matrix[i][j]);
    60         printf("
    ");
    61     }*/
    62     c=solve(m);
    63     for(int i=0;i<n;i++)
    64     {
    65         for(int j=0;j<n-1;j++) printf("%lld ",c.matrix[i][j]);
    66         printf("%lld
    ",c.matrix[i][n-1]);
    67     }
    68     return 0;
    69 }
  • 相关阅读:
    JavaWeb 期末设计 测试部署
    JavaWeb 期末项目设计 业务逻辑与实现
    JavaEE期末设计-银行转账系统需求文档分析
    Lamda 表达式
    Spring AOP capabilities and goals
    LDAP & Implement
    RESTful levels & HATEOAS
    Servlet CDI
    spring 历史&哲学
    mysql backup & recovery
  • 原文地址:https://www.cnblogs.com/nowandforever/p/4592033.html
Copyright © 2020-2023  润新知