fork(12) download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main() {
  5. int n, m;
  6. cin >> m >> n;
  7. double a[m][m]; //Исходная матрица
  8. double b[m][m]; //Вспомогательная матрица
  9. double c[m][m]; //Матрица в степени n;
  10. double ans[m][m];
  11. for(int i = 0; i < m; i++){
  12. for(int j = 0; j < m; j++){
  13. a[i][j] = b[i][j] = c[i][j] = ans[i][j] = 0; //Очистка памяти
  14. }
  15. }
  16. for(int i = 0; i < m; i++){
  17. for(int j = 0; j < m; j++){
  18. cin >> a[i][j];
  19. c[i][j] = b[i][j] = ans[i][j] = a[i][j];
  20. }
  21. }
  22. for(int it = 1; it < n; it++){
  23. //Возводим матрицу в след. степень
  24. for(int i = 0; i < m; i++){
  25. for(int j = 0; j < m; j++){
  26. c[i][j] = 0;
  27. for(int k = 0; k < m; k++){
  28. c[i][j] += a[i][k]*b[k][j];
  29. }
  30. }
  31. }
  32. for(int i = 0; i < m; i++){
  33. for(int j = 0; j < m; j++){
  34. ans[i][j] += c[i][j]; //Добавляем к ответу
  35. b[i][j] = c[i][j]; //Заменяем вспомогательную матрицу
  36. }
  37. }
  38. }
  39. //Добавляем единичную матрицу
  40. for(int i = 0; i < m; i++){
  41. ans[i][i]++;
  42. }
  43. //Вывод результата
  44. for(int i = 0; i < m; i++){
  45. for(int j = 0; j < m; j++){
  46. cout << ans[i][j] << ' ';
  47. }
  48. cout << endl;
  49. }
  50. return 0;
  51. }
Success #stdin #stdout 0s 3232KB
stdin
3 3
3 2 1
5 7 3
9 7 3

stdout
359 358 158 
1028 1047 460 
1156 1162 513