蓝桥:矩阵乘法

矩阵乘法

问题描述

 给定⼀个N阶矩阵A,输出AM次幂(M是⾮负整数)

 例如:

  A = 1 2

         3 4

  A2次幂  7 10

                  15 22

   输⼊格式

     第⼀⾏是⼀个正整数NM1<=N<=30, 0<=M<=5),表示矩阵A的阶数和要求的幂数

  接下来N⾏,每⾏N个绝对值不超过10的⾮负整数,描述矩阵A的值

输出格式

扫描二维码关注公众号,回复: 8526645 查看本文章

  输出共N⾏,每⾏N个整数,表示AM次幂所对应的矩阵。相邻的数之间⽤⼀个空格隔开

样例输⼊

2 2

1 2

3 4

样例输出

7 10

15 22

分析:竟然有⼀个!0次幂!矩阵的零次冥要输出单位矩阵!
#include <iostream>
using namespace std;
long long int b[40][40];
int main() {
 int n, m;
 cin >> n >> m;
 long long int a[40][40];
 long long int t[40][40];
 for(int i = 0; i < n; i++) {
     for(int j = 0; j < n; j++) {
         cin >> a[i][j];
         t[i][j] = a[i][j];
     }
 }
 if( m == 0) {
     for(int i = 0; i < n; i++) {
         for(int j = 0; j < n; j++) {
             if(i != j) {
                cout << 0 << " ";
             } else {
                cout << 1 << " ";
             }
         }  
      cout << endl;
     }
    return 0;
 }
 while(--m) {
    for(int i = 0; i < n; i++) {
        for(int j = 0; j < n; j++) {
            int k = n;
            while(k) {
              b[i][j] += t[i][k-1] * a[k-1][j];
              k--;
            }
        }
    }
    for( int  i = 0; i < n; i++) {
         for( int j = 0; j < n; j++) {
              t[i][j] = b[i][j];
              b[i][j] = 0;
         }
    }
 }
 for(int i = 0; i < n; i++) {
     for(int j = 0; j < n; j++) {
         cout << t[i][j] << " ";
     }
     cout << endl;
 }
 return 0; 
}
发布了736 篇原创文章 · 获赞 123 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/S_999999/article/details/103216987