Два игрока, Сергей и Анатолий, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает
Сергей. За один ход игрок может из каждой кучи убрать потри камня
или убрать целиком одну кучу, а другую разделить на две равные (если
это позволяет количество камней).
Игра завершается после того хода, когда хотя бы одна куча становится
пустой или когда невозможно сделать очередной ход по правилам. Побеждает
тот, кто сделал последний ход. В начальный момент времени в
одной куче лежит N камней, а в другой — К камней.
Будем говорить, что игрок имеет выигрышную стратегию, если он
может выиграть при любых ходах противника. Описать стратегию игрока
— значит описать, какой ход он должен сделать в любой ситуации, которая
ему может встретиться при различной игре противника.
Известно, что после неудачного первого хода Сергея Анатолий выиграл
первым своим ходом. При каком наибольшем значении К это возможно.
если N — 32?
n=5;
Var
ar:array[1..n] of integer;
ar2:array[1..n] of integer;
i,k:integer;
function prost(a:integer):boolean;
var i:integer;
b:boolean;
begin
b:=true;
for i:=2 to a div 2 do
if a mod i=0 then
begin;
b:=false;
break;
end;
if a=1 then b:=false;
prost:=b;
end;
begin;
randomize;
k:=0;
for i:=1 to n do
begin;
ar[i]:=random(101);
write(ar[i]:4);
end;
writeln;
for i:=1 to n do
if prost(ar[i]) then
begin;
inc(k);
ar2[k]:=ar[i];
write(ar2[k]:4);
end;
end.
var
c, a: array[1..20] of integer;
i: integer;
begin
write('Первый массив ');
for i := 1 to 20 do begin
c[i] := i * (-5);
write(c[i], ' ');
end;
writeln;
write('Преобразованный массив ');
for i := 1 to 20 do begin
a[i] := c[20 - i + 1];
write(a[i], ' ');
end;
end.
ИЛИ Программа не использующая два массива, а просто переворачивающая первый
var
c: array[1..20] of integer;
i: integer;
begin write('Первый массив ');
for i := 1 to 20 do begin
c[i] := i * (-5);
write(c[i], ' ');
end;
writeln;
write('Преобразованный массив ');
for i := 20 downto 1 do write(c[i], ' ');
end.
Обе программы работают!