OpenFIPI 2.0
19
5
521F94
Задание 19
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу один или четыре камня либо увеличить количество камней в куче в три раза. Для того чтобы делать ходы, у каждого игрока есть неограниченное количество камней.
Игра завершается в тот момент, когда количество камней в куче становится не менее 67.
Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу, состоящую из 67 или более камней.
В начальный момент в куче было S камней; 1 ≤ S ≤ 66.
Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.
Укажите такое значение S, при котором Петя не может выиграть за один ход, но при любом ходе Пети Ваня может выиграть своим первым ходом.
Задание 19 https://openfipi.devinf.ru/task/521F94
Задание 20 https://openfipi.devinf.ru/task/67484B
Задание 21 https://openfipi.devinf.ru/task/687734
22
var
mv: array[1..500] of integer;
begin
// Выигрышные позиции за 1 ход
for var i := 1 to 66 do
if (i * 3 >= 67) then mv[i] := 1;
// 19. Проигрышные позиции за 1 ход
writeln('Задание 19');
for var i := 1 to 66 do
if (mv[i] = 0) and (mv[i + 1] = 1) and (mv[i + 4] = 1) and (mv[i * 3] = 1) then
begin
mv[i] := -1;
write(i, ' ');
end;
// 20. Выигрышные позиции за 2 хода
writeln();
writeln('Задание 20');
for var i := 1 to 66 do
if (mv[i] = 0) and ((mv[i + 1] = -1) or (mv[i + 4] = -1) or (mv[i * 3] = -1)) then
begin
mv[i] := 2;
write(i, ' ');
end;
// 21. Проигрышные позиции за 2 хода
writeln();
writeln('Задание 21');
for var i := 1 to 66 do
if (mv[i] = 0) and (mv[i + 1] in [1..2]) and (mv[i + 4] in [1..2]) and (mv[i * 3] in [1..2]) then write(i, ' ');
end.
Просмотреть отправленные ответы 521F94