OpenFIPI 2.0

20

6

67484B

Задание 20

Для игры, описанной в задании 19, найдите два таких минимальных значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия:

− Петя не может выиграть за один ход;

− Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.

Найденные значения запишите в ответе в порядке возрастания.

Задание 19 https://openfipi.devinf.ru/task/521F94

Задание 20 https://openfipi.devinf.ru/task/67484B

Задание 21 https://openfipi.devinf.ru/task/687734

18 21

var
 mv : array[1..500] of integer;

Function M(x: integer) := (x + 1, x + 4, x * 3);

begin
for var i:= 67 to 500 do
  mv[i] := 5;
for var i:= 1 to 66 do
begin
  var r := M(i);
  if (mv[i] = 0) and ((mv[r[0]] = 5) or (mv[r[1]] = 5) or (mv[r[2]] = 5)) then mv[i] := 1;
end;
// 19
for var i:= 1 to 66 do
begin
  var r := M(i);
  if (mv[i] = 0) and ((mv[r[0]] = 1) and (mv[r[1]] = 1) and (mv[r[2]] = 1)) then mv[i] := -1;
end;
writeln(19);
for var i := 1 to 67 do
begin
  if mv[i] = -1 then
    writeln(i, ' ', mv[i]);
end;

// 20
for var i:= 1 to 66 do
begin
  var r := M(i);
  if (mv[i] = 0) and ((mv[r[0]] = -1) or (mv[r[1]] = -1) or (mv[r[2]] = -1)) then mv[i] := 2;
end;
writeln();
writeln(20);
for var i := 1 to 67 do
begin
  if mv[i] = 2 then
    writeln(i, ' ', mv[i]);
end;


// 21
for var i:= 1 to 66 do
begin
  var r := M(i);
  if (mv[i] = 0) and (((mv[r[0]] = 1) or (mv[r[0]] = 2)) and ((mv[r[1]] = 1) or (mv[r[1]] = 2)) and ((mv[r[2]] = 1) or (mv[r[2]] = 2))) then mv[i] := -2;
end;
writeln();
writeln(21);
for var i := 1 to 67 do
begin
  if mv[i] = -2 then
    writeln(i, ' ', mv[i]);
end;

end.

Просмотреть отправленные ответы 67484B