Задача. Дана квадратная матрица А порядка n. Получить матрицу AB; элементы матрицы B вычисляются по формуле:
[latex]b_{ij}=\left\{\begin{matrix}\frac{1}{i+j-1}&,if\: i<j\\ 0&,if\: i=j\\-\frac{1}{i+j-1}&other\: case\end{matrix}\right.[/latex][latex](i,j=1,\cdots, n)[/latex]
Тесты:
Размер матрицы | Входные данные | Результат | Комментарий |
n=2 | [latex]\begin{pmatrix}1&7\\3&2\end{pmatrix}[/latex] | [latex]\begin{pmatrix}-3,5&0,5\\-1&1,5\end{pmatrix}[/latex] | Пройден |
n=3 | [latex]\begin{pmatrix}1&2&3\\7&6&5\\4&8&9\end{pmatrix}[/latex] | [latex]\begin{pmatrix}-2&-0,25&0,83333\\-4,66667&2,25&3,83333\\-7&-0,25&3,333\end{pmatrix}[/latex] | Пройден |
Код программы:
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 39 40 41 42 43 44 45 |
#include <iostream> using namespace std; int main() { int n; cin >> n; double A[n][n]; for(int i = 0; i < n; i++){ for(int j = 0; j < n; j++){ cin >> A[i][j]; } } double B[n][n]; for(int i = 0; i < n; i++){ for(int j = 0; j < n; j++){ B[i][j] = 0; if (i < j){B[i][j] = 10 * 0.1 / ((i+1) + (j+1) -1);} else { if (i == j){B[i][j] = 0;} else {B[i][j] = -10 * 0.1 / ((i+1) + (j+1) -1);} } } } double C[n][n]; for(int i = 0; i < n; i++){ for(int j = 0; j < n; j++){ C[i][j] = 0; for(int k = 0; k < n; k++){ C[i][j] += A[i][k] * B[k][j]; } } } for(int i = 0; i < n; i++){ for(int j = 0; j < n; j++){ cout << C[i][j] << " "; } cout << endl; } return 0; } |
После ввода матрицы A, мы должны найти элементы матрицы B. Из условия задачи: [latex]b_{ij}=\left\{\begin{matrix}\frac{1}{i+j-1}&,if\: i<j\\ 0&,if\: i=j\\-\frac{1}{i+j-1}&other\: case\end{matrix}\right.[/latex] , при [latex](i,j=1,\cdots, n)[/latex].
Для нахождения [latex]b_{ij}[/latex] используется условный оператор if в цикле for. Матрица C — результат умножения матрицы A на матрицу B, которое также производим в цикле for.
Код программы можно посмотреть здесь.
Решение на 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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
import java.util.*; import java.lang.*; import java.io.*; class Ideone { public static void main (String[] args) throws java.lang.Exception { Scanner in = new Scanner(System.in); int n = in.nextInt(); double A[][]; A = new double [n][]; for(int i=0; i<n; i++){ A[i] = new double [n]; for(int j=0; j<n; j++){ A[i][j] = in.nextDouble(); } } double B[][]; B = new double [n][]; for(int i=0; i<n; i++){ B[i] = new double [n]; for(int j=0; j<n; j++){ B[i][j]=0; if (i<j){ B[i][j]=10*0.1/((i+1)+(j+1)-1); } else{ if (i==j){ B[i][j]=0; } else { B[i][j]=-10*0.1/((i+1)+(j+1)-1); } } } } double C[][]; C = new double [n][]; for(int i=0; i<n; i++){ C[i] = new double [n]; for(int j=0; j<n; j++){ C[i][j]=0; for(int k=0; k<n; k++){ C[i][j]+=A[i][k]*B[k][j]; } } } for(int i=0; i<n; i++){ for(int j=0; j<n; j++){ System.out.print(C[i][j]+" "); } System.out.println(); } } } |
Молодец! Справились с первой задачей. Давайте дальше.