Const N = 10;
var i, max: integer;
a: array[1..N] of integer;
begin
max := 1;
writeln('Массив до: ');
for i := 1 to N do begin
a[i] := random(10);
write(a[i]:3);
if(a[i] > a[max]) then max := i;
end;
writeln(#10, 'Массив после: ');
for i := 1 to N do begin
if(a[i] > 1) and (a[i] < 4) then a[i] := a[max];
write(a[i]:3);
end;
writeln(#10, 'Максиммальный элемент: ', a[max], #10, 'Его индекс: ', max);
end.
Побеждает первый игрок. Например, первым ходом он увеличивает количество камней во второй куче в три раза
(1, 2) -> (1, 6)
Второй игрок может своим ходом получить пары куч (3, 6), (5, 6), (1, 10), (1, 18)
В любом из этих случаев первый игрок может выиграть следующим ходом
(3, 6) -> (3, 18), 3 + 18 >= 20
(5, 6) -> (5, 18), 5 + 18 >= 20
(1, 10) -> (1, 30), 1 + 30 >= 20
(1, 18) -> (1, 54), 1 + 54 >= 20
сначала 10 если кучки по 5 равны то 2 оставшиеся
//PascalABC.NET (версия 3.1, сборка 1198 от 11.03.2016)
begin
var m:=ReadlnInteger();
var a:=matrixRandom(m,m,-20,20);
Println(a);
var p:=1;
for var i:=0 to m-1 do
for var j:=0 to m-1 do
if a[i,j]>0 then p:=p*a[i,j];
println(p);
end.