fork(1) download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main() {
  5. // Умножение матриц
  6. int na, ma, nb, mb;
  7. cin >> na >> ma;
  8. int **a = new int *[na];
  9. for (int i = 0; i < na; i++) {
  10. a[i] = new int[ma];
  11. }
  12. for (int i = 0; i < na; i++) {
  13. for (int j = 0; j < ma; j++) {
  14. cin >> a[i][j];
  15. }
  16. }
  17. cin >> nb >> mb;
  18. // Проверяем возможность вычисления произведения матриц
  19. if (ma != nb) {
  20. cout << -1;
  21. return 0;
  22. }
  23. int **b = new int *[nb];
  24. for (int i = 0; i < nb; i++) {
  25. b[i] = new int[mb];
  26. }
  27. for (int i = 0; i < nb; i++) {
  28. for (int j = 0; j < mb; j++) {
  29. cin >> b[i][j];
  30. }
  31. }
  32.  
  33. int **c = new int *[na];
  34. for (int i = 0; i < na; i++) {
  35. c[i] = new int[mb];
  36. }
  37. // Вычисляем произведение
  38. for (int i = 0; i < na; i++) {
  39. for (int j = 0; j < mb; j++) {
  40. for (int r = 0; r < ma; r++) {
  41. c[i][j] += a[i][r] * b[r][j];
  42. }
  43. }
  44. }
  45. // Выводим результат
  46. cout << na << " " << mb << "\n";
  47. for (int i = 0; i < na; i++) {
  48. for (int j = 0; j < mb; j++) {
  49. cout << c[i][j];
  50. if (j + 1 != mb) cout << " ";
  51. }
  52. cout << "\n";
  53. }
  54. return 0;
  55. }
Success #stdin #stdout 0s 4392KB
stdin
2 3
57 -49 31
89 11 -37
3 1
19
-19
0
stdout
2 1
2014
1482