Задача:
Дана целочисленная матрица [latex][a_{ij}, i, j =1, … n][/latex]. Получить [latex]b_1, …, b_n[/latex], где [latex]b_i=\prod_ja_{ji}[/latex] для все таких [latex]j[/latex], что [latex]1 < a_{ji} <= n[/latex];
Тесты:
[latex]ixj[/latex] | a_{ij} | [latex]b_1, …, b_n[/latex] | Комментарий |
3×3 | [latex]\begin{pmatrix}1 & 2 & 1 \\ 2 & 1 & 2 \\ 2 & 2 & 1\end{pmatrix}[/latex] | 4, 4, 2 | Пройден |
4×3 | [latex]\begin{pmatrix}2 & 4 & 8 \\3 & 1 & 5 \\6 & 7 & 8\\1 & 4 & 1\end{pmatrix}[/latex] | 6, 4, * | Пройден |
2×3 | [latex]\begin{pmatrix}2 & 4 & 3\\ 4 & 2 & 3\end{pmatrix}[/latex] | 2, 2, * | Пройден |
Код:
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 |
#include <iostream> using namespace std; int main() { int n,m; cin >> n; cin >> m; int a[n][m]; int b[n]; for(int i=0; i < n; i++) { for(int j=0; j < m; j ++) cin >> a[i][j]; } for(int i=0; i < m; i++) { b[i]=1; for(int j=0; j < m; j++) { if((a[j][i] <= n)&&(a[j][i] > 1)) b[i]*=a[j][i]; } } for(int i=0; i < m; i++) { if(b[i]!=1) cout << b[i] << " "; else cout << "* "; } return 0; } |
Для начала вводим размерность массива [latex]a[/latex]. Затем с помощью цикла [latex]for[/latex] заполняем этот массив.
Теперь каждому элементу массива [latex]b[/latex] задаем значение [latex]1[/latex]. Находим произведение таких элементов матрицы [latex]a_{ji}[/latex], которе бы удовлетворяли условию задачи, а именно для все таких [latex]j[/latex], что [latex]1 < a_{ji} <= n[/latex]. В итоге если в массиве [latex]b[/latex] остается элемент с значением [latex]1[/latex], выводим символ [latex]*[/latex], так как нельзя найти произведение. Выводим значения массива [latex]b[/latex].
Код 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 |
import java.util.*; import java.lang.*; import java.io.*; class Depo { public static void main (String[] args) throws java.lang.Exception { int n, m; Scanner in = new Scanner(System.in); n= in.nextInt(); m= in.nextInt(); int[][] a= new int[n][m]; int[] b= new int[n]; for(int i=0; i < n; i++){ for(int j=0; j < m; j ++) a[i][j]=in.nextInt(); } for(int i=0; i < m; i++){ b[i]=1; for(int j=0; j < m; j++){ if((a[j][i] <= n)&&(a[j][i] > 1)) b[i]*=a[j][i]; } } for(int i=0; i < m; i++){ if(b[i]!=1) System.out.printf(b[i] + " "); else System.out.printf("* "); } } } |
Что тут скажешь? Зачтено.