Задание №19
ЕГЭ-2023. Задание 19
Тема: Умение анализировать алгоритм логической игры. Время выполнения 6 минут.
Разбор задания № 19 ЕГЭ-2023. Демо.
В файле разобран алгоритм решения задачи. Здесь же покажу решение с помощью я.п.
Приведем условие задачи:
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу один камень или увеличить количество камней в куче в два раза. Для того чтобы делать ходы, у каждого игрока есть неограниченное количество камней.
Игра завершается в тот момент, когда количество камней в куче становится не менее 129. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу из 129 или больше камней.
В начальный момент в куче было S камней, 1 ≤ S ≤ 128.
Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.
я.п. Python:
def f(x,p):
if x>=129 and p==3: return True
if x<129 and p==3: return False
if x>=129 and p<3:
return False
if p%2==1:
return f(x+1,p+1) and f(x*2,p+1)
else:
return f(x+1,p+1) or f(x*2,p+1)
for s in range(1,129):
if f(s,1):
print(s)
break
я.п. C/C++:
#include <bits/stdc++.h>
using namespace std;
bool f(int x,int p)
{
if(x>=129&&p==3)
return true;
if(x<129&&p==3)
return false;
if(x>=129)
return false;
if(p%2!=0)
return f(x+1,p+1)&&f(x*2,p+1);
else
return f(x+1,p+1)||f(x*2,p+1);
}
int main()
{
for(int s=1;s<129;++s)
if(f(s,1))
cout<<s<<' ';
return 0;
}
я.п. PascalABC.net:
function f(x,p: integer):boolean;
begin
if (x>=129) and (p=3) then begin f:=true;exit end;
if (x<129) and (p=3) then begin f:= false;exit end;
if (x>=129) then begin f:= false;exit end;
if p mod 2 = 1 then
f:=f(x+1,p+1) and f(x*2,p+1)
else
f:=f(x+1,p+1) or f(x*2,p+1);
end;
begin
for var s:=1 to 129 do
if f(s,1) then
print(s);
end.
Ответ: 64
Решение заданий № 19 ЕГЭ прежних лет
Решение.
Допустим, во второй куче находится х камней. Петя выигрывает первым ходом, если 2*х + 7 >=77 (ведь речь идет о минимальном количестве камней во второй куче). По условию задачи Петя выиграть первым ходом не может, а выигрывает Ваня первым ходом. Следовательно, указанное выше выражение не выполняется.
То есть для Пети: 2*х + 7 < 77.
Для минимального количества камней во второй куче, Ваня может выиграть первым ходом только увеличив вдвое количество камней в большей куче. То есть, условием выигрыша для Вани является выражение: 7 + 4*х >= 77. Отсюда, 4*х >= 70. И, следовательно, х = 18 (70/4).
Ответ: 18.