• [蓝桥杯][基础练习VIP]矩阵乘法


    时间限制: 1Sec 内存限制: 128MB 提交: 113 解决: 30

    题目描述
    给定一个N阶矩阵A,输出A的M次幂(M是非负整数) 

    例如: 

    A  = 

    1  2 

    3  4 

    A的2次幂 

    7  10 

    15  22 
    输入
    第一行是一个正整数N、M(1< =N< =30,  0< =M< =5),表示矩阵A的阶数和要求的幂数 

    接下来N行,每行N个绝对值不超过10的非负整数,描述矩阵A的值 
    输出
    输出共N行,每行N个整数,表示A的M次幂所对应的矩阵。相邻的数之间用一个空格隔开 
    样例输入
    2  2 
    
    1  2 
    
    3  4 
    样例输出
    7 10
    15 22
    //eg.注意如何处理m=0时候的情况,需要进行特判
    #include<cstring> #include<cstdio> #include<iostream> using namespace std; const int maxn = 31; typedef long long LL; LL A[maxn][maxn],B[maxn][maxn],C[maxn][maxn],E[maxn][maxn]; int main(void) { for(int i=1;i<=30;i++) E[i][i]=1; int n,m; cin>>n>>m; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) { cin>>A[i][j]; B[i][j]=C[i][j]=A[i][j]; } if(m==0) { for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { cout<<E[i][j]<<" "; } cout<<endl; } } else { for(int k=0;k<m-1;k++) { for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { LL sum=0; for(int t=1;t<=n;t++) { sum+=A[i][t]*B[t][j]; } C[i][j]=sum; } } for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) B[i][j]=C[i][j]; } for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { cout<<C[i][j]<<" "; } cout<<endl; } } return 0; }
  • 相关阅读:
    查全球服务器的网站
    linux passwd文件中位置所对应的信息
    linux目录清单
    mysql自动添加编号
    mysql优化学习
    maven的基本使用2
    SpringBoot的基本使用
    Mybatis的缓存
    部分属性及方法的浏览器兼容问题
    Mybatis的sql mapper映射文件详解
  • 原文地址:https://www.cnblogs.com/zuimeiyujianni/p/8932842.html
Copyright © 2020-2023  润新知