Статья Автор: Лебедев Дмитрий

Настраиваем задание ЕГЭ 19-21

О РЕШЕНИИ ЗАДАНИЯ ЕГЭ 19-20-21 С ПРОГРАММОЙ РАСКРАСКИ 
В этой статье разберём настройку  программы под правила игры
Рассматривается версия программы, использующая список со всеми возможными состояниями
Полный текст варианта программы

Пример 1: Два игрока, Петя и Ваня, играют в следующую игру.
Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя.
За один ход игрок может добавить в кучу пять каменей или увеличить количество камней в куче в три раза.
Для того чтобы делать ходы, у каждого игрока есть неограниченное количество камней.
Игра завершается в тот момент, когда количество камней в куче становится не менее N.
Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу из N или больше камней.
В начальный момент в куче было S камней, 1 ≤ SN-1.
В этом примере надо "увеличить" размер списка Q
Проверьте правильность решения на задании  49927

Замечания:

  • размер поля вывода в режиме "статья" ограничен, поэтому для больших значений N
    оператор  print(t//2,A,B) лучше заменить на 
    print(t//2,'[', *A[:3],'...',*A[-3:],'][',*B[:3],'...',*B[-3:],']')
  • при больших значениях N время работы программы тоже сильно увеличивается,
    поэтому  while go : лучше заменить на while t<6:  

 



Пример 2:
Два игрока, Петя и Ваня, играют в следующую игру.
Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя.
За один ход игрок может убрать из кучи 7 камней или уменьшить количество камней в куче в 3 раза
(количество камней, полученное при делении, округляется до меньшего).
Игра завершается в тот момент, когда количество камней в куче становится менее N.
Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу из N-1 или менее камней.
В начальный момент в куче было S камней, N ≤ S ≤ 100*N.
Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.

В этом примере в Q надо вначале записать 0, а потоме значения None. Например, так:
Q=[None]*(100*N+1)
for i in range(N) :
    Q[i]=0

Проверьте правильность решения на задании  49928

Замечания:

  • размер поля вывода в режиме "статья" ограничен, поэтому для больших значений N
    оператор  print(t//2,A,B) лучше заменить на 
    print(t//2,'[', *A[:3],'...',*A[-3:],'][',*B[:3],'...',*B[-3:],']')
  • при больших значениях N время работы программы тоже сильно увеличивается,
    поэтому  while go : лучше заменить на while t<6:  

Пример 3:
Два игрока, Петя и Ваня, играют в следующую игру.
Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя.
За один ход игрок может добавить в кучу один камень или увеличить количество камней в куче в два раза.
Для того чтобы делать ходы, у каждого игрока есть неограниченное количество камней.
Игра завершается в тот момент, когда количество камней в куче становится не менее N.
Проигравшим считается игрок, сделавший последний ход, т.е. первым получивший кучу из N или больше камней.
В начальный момент в куче было S камней, 1 ≤ SN-1.
Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.

В этом примере в Q вместо 0 надо записать -1, то есть поменять раскраску финальных полей

Проверьте правильность решения на задании  49929

Пример 4:
Два игрока, Петя и Ваня, играют в следующую игру.
Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя.
За один ход игрок может добавить в кучу два или четыре камня или увеличить количество камней в куче в три раза.
Для того чтобы делать ходы, у каждого игрока есть неограниченное количество камней.
Игра завершается в тот момент, когда количество камней в куче становится не менее N.
Если при этом в куче оказалось не более 2N камней, то победителем считается игрок,
сделавший последний ход. В противном случае победителем становится его противник, при этом считается,
что он сделал свой ход.
В начальный момент в куче было S камней, 1 ≤ SN-1.

Финальные поля необходимо раскрасить в разные цвета. Проще это сделать циклом
Q=[None]*(3N+1)
for i in range(N,len(Q)):
   if i<=2*N : Q[i]=0
   else : Q[i]=-1
      
Проверьте правильность решения на задании  49930 
Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация
Печать