Задача:
Дана матрица [latex]A[/latex] размера [latex]m\times n[/latex]. Найти матрицу [latex]AA^{*}[/latex] (её размер [latex]m\times m[/latex]).
[latex]m[/latex] | [latex]n[/latex] | [latex]A[/latex] | [latex]AA^{*}[/latex] | |
3 | 5 | 1 2 3 4 5 0 0 0 78 92 6 7 8 9 110 |
55 772 630 772 14548 10822 630 10822 12330 |
Тест пройден |
2 | 4 | 11 22 33 44 76 0 1 0 |
3630 869 869 5777 |
Тест пройден |
C++:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
#include <iostream> using namespace std; int main() { int m, n; cin >> m >> n; int A[m][n], AAt[m][m]; for(int i=0; i<m; i++){ for(int j=0; j<n; j++){ cin >> A[i][j]; } } for(int i=0; i<m; i++){ for(int j=0; j<m; j++){ int tmp=0; for(int k=0; k<n; k++){ tmp+=A[i][k]*A[j][k]; } AAt[i][j]=tmp; } } for(int i=0; i<m; i++){ for(int j=0; j<m; j++){ cout << AAt[i][j] << " "; } cout << endl; } return 0; } |
Java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
import java.util.*; import java.lang.*; import java.io.*; class Ideone { public static void main (String[] args) { Scanner in = new Scanner(System.in); int m = in.nextInt(); int n = in.nextInt(); int A[][] = new int [m][n]; int AAt[][] = new int [m][m]; for(int i=0; i<m; i++){ for(int j=0; j<n; j++){ A[i][j] = in.nextInt(); } } for(int i=0; i<m; i++){ for(int j=0; j<m; j++){ int tmp=0; for(int k=0; k<n; k++){ tmp+=A[i][k]*A[j][k]; } AAt[i][j]=tmp; } } for(int i=0; i<m; i++){ for(int j=0; j<m; j++){ System.out.print(AAt[i][j]+" "); } System.out.println(""); } } } |
[latex]A^{*}[/latex] — транспонированная матрица [latex]A[/latex]. Её строки — это столбцы [latex]A[/latex], а столбцы — строки [latex]A[/latex].
Маленькое замечание — переменная tmp излишня.
Java-версия засчитана, 10 баллов.