问题 E: 矩阵乘法

来源:互联网 发布:ipad听书软件 编辑:程序博客网 时间:2024/05/16 19:33
    网站不太稳定。。。不太稳定。。。不稳定。。。

问题 E: 矩阵乘法

时间限制: 1 Sec  内存限制: 128 MB
提交: 13  解决: 4
[提交][状态][讨论版]

题目描述



   基础练习  矩阵乘法   

时间限制:1.0s     内存限制:512.0MB

     

问题描述

  给定一个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





输入

输出

#include<iostream>using namespace std;int main(){int n,m;int a[31][31],b[31][31];int d[31][31];cin>>n>>m;for(int c=0;c<n;c++){for(int q=0;q<n;q++){cin>>a[c][q];}   }   if(m==0)   {   for(int i=0;i<n;i++)   {   for(int j=0;j<n;j++)   {   if(i==j)   {   b[i][j]=1;   }   }   }   }   else  {   m--;   for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { d[i][j]=a[i][j]; } }while(m--){for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { b[i][j]=0; } }for(int i=0;i<n;i++){for(int j=0;j<n;j++){for(int h=0;h<n;h++){b[i][j]=b[i][j]+(d[i][h]*a[h][j]);}}}for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { d[i][j]=b[i][j]; } } } } for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { if(j<n-1) cout<<b[i][j]<<" "; else if(j==n-1) cout<<b[i][j]; }cout<<"\n"; } return 0;}



原创粉丝点击