varenik506
07.12.2022 17:54

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу один камень, добавить два камня или увеличить количество камней в куче в два раза. При этом нельзя повторять ход, который только что сделал второй игрок. Например, если в начале игры в куче 3 камня, Петя может первым ходом получить кучу из 4, 5 или 6 камней. Если Петя получил кучу из 5 камней (добавил 2 камня), то следующим ходом Ваня может получить 6 или 10 камней. Получить 7 камней Ваня не может, так как для этого нужно добавить 2 камня, а такой ход только что сделал Петя.
Чтобы делать ходы, у каждого игрока есть неограниченное количество камней.
Игра завершается, когда количество камней в куче становится не менее 34. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу, в которой будет 34 или больше камней.
В начальный момент в куче было S камней, 1≤S≤33.
Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.
Укажите такое значение S, при котором Петя не может выиграть за один ход, но при любом ходе Пети Ваня может выиграть своим первым ходом.

Для вышеописанной игры существует несколько таких значений S, при которых у Пети есть выигрышная стратегия, причём Петя не может выиграть первым ходом, но может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найдите наименьшее и наибольшее из таких значений S.

В ответе запишите сначала наименьшее, затем наибольшее значение (в отдельные поля для ответов).

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

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
rkbsiti
04.04.2022 18:51
Var
  i,j,k,ix,jx,kx:integer;
  s:string;

function per(x:integer):string;
begin
case x of
  10: result:='A';
  11: result:='B';
  12: result:='C';
  13: result:='D';
  14: result:='E';
  15: result:='F';
  else
    str(x,result);
  end;
end;

begin
for i:=1 to 15 do
  for j:=0 to 15 do
    for k:=0 to 15 do
      if 2*(i*16*16+j*16+k)=j*16*16+k*16+i then
         begin
         ix:=i;
         jx:=j;
         kx:=k;
         end;
s:=per(ix)+per(jx)+per(kx);
writeln(s);     
end. 

В результате работы программы получаем ответ.
ответ: 6DB
0,0(0 оценок)
Ответ:
Nastyushon
09.03.2020 19:31
//PascalABC.NET
//Версия 3.3, сборка 1634 (14.02.2018)

begin
  var (cost, t, k) := (Arr(15, 70, 125, 230, 440), Arr(1, 5, 10, 20, 60), new integer[5]);
  var n := ReadInteger('n->');
  for var i := 4 downto 0 do
  begin
    k[i] := n div t[i];n := n mod t[i];
  end; 
  if k[0] * cost[0] >= cost[1] then begin k[0] := 0;inc(k[1]); end;
  if k[0] * cost[0] + k[1] * cost[1] >= cost[2] then 
  begin
    k[0] := 0;k[1] := 0;inc(k[2]); 
  end;
  if k[0] * cost[0] + k[1] * cost[1] + k[2] * cost[2] >= cost[3] then 
  begin
    k[0] := 0;k[1] := 0;k[2] := 0;inc(k[3]);
  end;
  if k[0] * cost[0] + k[1] * cost[1] + k[2] * cost[2] + k[3] * cost[3] >= cost[4] then 
  begin
    k[0] := 0;k[1] := 0;k[2] := 0;k[3] := 0;inc(k[4]); 
  end;
  
  for var i := 0 to 4 do WritelnFormat('{0} билет(ов)- {1} штук(а)', t[i], k[i]);
end.

Пример(1):
n-> 37
1 билет(ов)- 0 штук(а)
5 билет(ов)- 0 штук(а)
10 билет(ов)- 0 штук(а)
20 билет(ов)- 0 штук(а)
60 билет(ов)- 1 штук(а)

Пример(2):
n-> 35
1 билет(ов)- 0 штук(а)
5 билет(ов)- 1 штук(а)
10 билет(ов)- 1 штук(а)
20 билет(ов)- 1 штук(а)
60 билет(ов)- 0 штук(а)
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота