矩阵乘法 基础训练-蓝桥杯

Bertha 。 2022-03-24 15:40 503阅读 0赞

注意,当m==0时,输出单位矩阵。

题目描述

给定一个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次幂所对应的矩阵。相邻的数之间用一个空格隔开

输入样例

  1. 2 2
  2. 1 2
  3. 3 4

输出样例

  1. 7 10
  2. 15 22

来源or类型

  1. #include<iostream>
  2. using namespace std;
  3. int main()
  4. {
  5. int n,m,j,k,i,T;
  6. int a[31][31],b[31][31]={0},ans[31][31];
  7. cin>>n>>m;
  8. for (i=1;i<=n;i++)
  9. {
  10. for (j=1;j<=n;j++)
  11. {
  12. cin>>a[i][j];
  13. ans[i][j] = a[i][j];
  14. }
  15. } //输入
  16. if (m==0) //输出单位矩阵
  17. {
  18. for (i=1;i<=n;i++)
  19. {
  20. for (j=1;j<=n;j++)
  21. {
  22. if (i==j) cout<<1;
  23. else cout<<0;
  24. if (j!=n) cout<<" ";
  25. }
  26. cout<<endl;
  27. }
  28. return 0;
  29. }
  30. while (--m)//少乘一次
  31. {
  32. for (i=1;i<=n;i++)
  33. {
  34. for (j=1;j<=n;j++)
  35. {
  36. for (k=1;k<=n;k++)
  37. {
  38. b[i][j] += (a[i][k]*ans[k][j]);
  39. }
  40. }
  41. }
  42. for (i=1;i<=n;i++)
  43. {
  44. for (j=1;j<=n;j++)
  45. {
  46. ans[i][j] = b[i][j];
  47. b[i][j] = 0;
  48. }
  49. }
  50. }
  51. for (i=1;i<=n;i++)//打印结果
  52. {
  53. for (j=1;j<=n;j++)
  54. {
  55. cout<<ans[i][j];
  56. if (j!=n)
  57. cout<<" ";
  58. }
  59. cout<<endl;
  60. }
  61. return 0;
  62. }

发表评论

表情:
评论列表 (有 0 条评论,503人围观)

还没有评论,来说两句吧...

相关阅读