// PascalABC.NET 3.3, сборка 1547 от 07.10.2017
// Внимание! Если программа не работает, обновите версию!
begin
var n:=ReadInteger('Количество строк/столбцов в матрице:');
Writeln('*** Исходная матрица ***');
var a:=MatrRandom(n,n,-99,99);
a.Println(4); Writeln(4*a.ColCount*'-');
var (s,p):=(0,BigInteger(1));
for var i:=0 to n-1 do
if (a[i,i]>0) and (a[i,i].IsEven) then s+=a[i,i]
else
if a[i,n-1-i].IsOdd then p*=a[i,n-i-1];
Writeln(s*p)
end.
Пример
Количество строк/столбцов в матрице: 13
*** Исходная матрица ***
1 -62 88 54 98 -68 -10 -69 39 -69 -83 32 -31
-55 -57 51 -44 -15 -5 6 83 42 -9 -27 11 22
-4 -61 -4 -7 -9 50 20 67 94 -57 24 -51 -1
21 40 -21 -87 -17 62 61 52 -19 23 -66 45 41
-93 -84 -82 58 47 16 -57 -23 35 -49 35 -54 40
-33 -87 1 -49 99 -73 -92 85 73 65 5 30 -92
10 50 69 -85 16 -38 48 49 44 5 50 -64 -5
-92 -94 -78 85 -11 43 66 43 -4 49 -49 -70 23
-93 38 55 -67 -50 13 -71 39 -93 -8 8 21 35
-26 -2 90 22 8 51 -84 5 -81 -98 64 88 -24
62 63 -35 -86 -98 18 85 92 -45 -89 94 11 -45
-63 -92 55 -98 14 14 -35 54 -30 -31 53 74 -59
-1 -85 -81 87 36 91 -55 74 51 -34 -25 93 -9
----------------------------------------------------
216716207400