-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTask_557.java
77 lines (67 loc) · 2.79 KB
/
Task_557.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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package Task_acmp;
import java.util.ArrayList;
import java.util.Scanner;
public class Task_557 {
public static void main(String[] args) {
ArrayList<int[][]> matrixArr = new ArrayList<>();
Scanner sc = new Scanner(System.in);
int quantityMatrix = sc.nextInt();
int sizeMatrix = sc.nextInt();
int numberString = sc.nextInt();
int numberColumn = sc.nextInt();
int simpleNumber = sc.nextInt();
int sum;
for (int i = 0; i < quantityMatrix; i++) {
matrixArr.add(new int[sizeMatrix][sizeMatrix]);
for (int j = 0; j < sizeMatrix; j++) {
for (int l = 0; l < sizeMatrix; l++) {
matrixArr.get(i)[j][l] = sc.nextInt();
}
}
}
sc.close();
if (quantityMatrix == 1) {
System.out.println(matrixArr.get(0)[numberString - 1][numberColumn - 1]);
} else {
if (sizeMatrix == 1) {
sum = 1;
for (int i = 0; i < quantityMatrix; i++) {
sum *= matrixArr.get(i)[0][0];
if (sum >= simpleNumber) {
sum = sum % simpleNumber;
}
}
System.out.println(sum);
} else {
ArrayList<int[][]> matrixFinish = new ArrayList<>();
int[][] matrixFin = new int[sizeMatrix][sizeMatrix];
int sumMax = 0;
sum = 0;
for (int i = 1; i < quantityMatrix; i++) {
matrixFinish.add(new int[sizeMatrix][sizeMatrix]);
for (int l = 0; l < sizeMatrix; l++) {
matrixFin[numberString - 1][l] = 0;
for (int j = 0; j < sizeMatrix; j++) {
if (i == 1) {
sum = matrixArr.get(i - 1)[numberString - 1][j] * matrixArr.get(i)[j][l];
} else {
sum = matrixFinish.get(i - 2)[numberString - 1][j] * matrixArr.get(i)[j][l];
}
sumMax += sum;
if (sumMax >= simpleNumber) {
sumMax = sumMax % simpleNumber;
}
}
if (i == 1) {
matrixFinish.get(i - 1)[numberString - 1][l] = sumMax;
} else {
matrixFinish.get(i - 1)[numberString - 1][l] = sumMax;
}
sumMax = 0;
}
}
System.out.println(matrixFinish.get(matrixFinish.size() - 1)[numberString - 1][numberColumn - 1]);
}
}
}
}