Массив имеет четное число элементов.заполнить массив случайными числами и выполнить реверс отдельно в первой половине и во второй половине. пример: массив: 123 4 5 6 результат: 321 6 5 4
// PascalABC.NET 3.1, сборка 1239 от 08.05.2016 begin var n:=ReadInteger('n='); if n.IsOdd then Inc(n); var a:=ArrRandom(n,10,99); a.Println; a:=a[:n div 2].Reverse.Concat(a[n div 2:].Reverse).ToArray; a.Println end.
Второй игрок выиграет первым ходом в том случае, если первый прибавит ко второй куче 3 или умножит её содержимое на 3, иначе говоря станет больше 7, что предвещает победу на 2-ом ходе игрока №2. Следовательно первый игрок так не пойдёт. Остаётся 2 варинта безошибочных ходов для игрока №1, это прибавить к первой куче 3 или умножить её содержимое на 3, тем самым не дать выиграть оппоненту на 2-ом ходе, и при таком действии №2 не сможет совершить ход, после которого №1 не смог бы превзойти 22. 1;3 ---> №1 3;4 ---> №2 9;4 или 6;4 или 3;7 или 3;12 --> №1 побеждает при умножении сорержимого кучи с большим числом камней на 3 1;3 ---> №1 4;4 ---> №2 7;4 или 12;4 или 4;7 или 4;12 аналогично следующий ход №1 будет выигрышным
Нарисуем на диаграмме, при каких x выражение ((x ∈ A) → (x ∈ P)) ∧ ((x ∈ Q) → ¬(x ∈ A)) истинно. Выражение состоит из двух условий, соединенных логическим и, так что оно будет истинным в том и только в том случае, когда оба условия истинны.
(x ∈ A) → (x ∈ P) истинно всегда, кроме случая x ∈ A, x ∉ P. На рисунке область истинности выделена синей штриховкой. (x ∈ Q) → ¬(x ∈ A) истинно всегда, кроме случая x ∈ Q, x ∈ A. На рисунке эта область выделена зелёной штриховкой.
Формула истинна, если x принадлежит областям, выделенным обеими штриховками одновременно. Если формула верна при всех x, то области, не выделенные какой-то из штриховок, не содержат элементов, так что всё множество A состоит из элементов, которые есть в P, но которых нет в Q (эта область на рисунке помечена звёздочкой). Подходящих элементов всего 7: P \ Q = {2, 4, 8, 10, 14, 16, 20}, – так что максимальное количество элементов в A равно семи.
begin
var n:=ReadInteger('n=');
if n.IsOdd then Inc(n);
var a:=ArrRandom(n,10,99); a.Println;
a:=a[:n div 2].Reverse.Concat(a[n div 2:].Reverse).ToArray;
a.Println
end.
Тестовое решение
n= 10
97 15 37 76 63 91 73 47 40 39
63 76 37 15 97 39 40 47 73 91