fork(1) download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main() {
  5. int m,n;
  6. cin >> m >> n;
  7. int A[m][m]; //массив для хранения исходной матрицы
  8. int B[m][m]; //массив для хранения степеней исходной матрицы
  9. int C[m][m]; //массив для хранения произведений A на B при возведении в степень
  10. for(int i=0;i<m;i++)
  11. {
  12. for(int j=0;j<m;j++)
  13. {
  14. cin >> A[i][j];
  15. B[i][j]=A[i][j];
  16. }
  17. }
  18. int sum=0;
  19. int result=0;
  20. if(n>0)
  21. {
  22. for(int i=0;i<m;i++)
  23. {
  24. result+=B[i][i]; //нахождение следа исходной матрицы
  25. }
  26. cout << result << " ";
  27. }
  28. for(int q=0;q<n-1;q++)
  29. {
  30. for(int i=0;i<m;i++) //перемножение матриц
  31. {
  32. for(int z=0;z<m;z++)
  33. {
  34. for(int j=0;j<m;j++)
  35. {
  36. sum+=A[i][j]*B[j][z];
  37. }
  38. C[i][z]=sum;
  39. sum=0;
  40. }
  41. }
  42. for(int i=0;i<m;i++) //переприсваивание элементов матрицы
  43. {
  44. for(int j=0;j<m;j++)
  45. {
  46. B[i][j]=C[i][j];
  47. }
  48. }
  49. result=0;
  50. for(int i=0;i<m;i++)
  51. {
  52. result+=B[i][i]; //нахождение следа полученной матрицы
  53. }
  54. cout << result << " ";
  55. }
  56. return 0;
  57. }
Success #stdin #stdout 0s 3144KB
stdin
2 5
1 2
3 4
stdout
5 29 155 833 4475