19.07 Прочие прототипы
Ошибка.
Попробуйте повторить позже
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может либо добавить в одну из куч один камень, либо увеличить количество камней в два раза. Чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда суммарное количество камней в кучах становится не менее . Победителем считается игрок, сделавший последний ход, т. е. первым получивший позицию, в которой в кучах будет или больше камней.
В начальный момент в первой куче было камней, во второй куче был каменей, в третьей — камней, . Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.
Известно, что Петя выиграл своим первым ходом. Назовите минимальное значение , при котором это возможно.
def moves(h):
a, b, c = h
return (a + 1, b, c), (a, b + 1, c), (a, b, c + 1), (a * 2, b, c), (a, b * 2, c), (a, b, c * 2)
@lru_cache(None)
def f(h):
if sum(h) >= 70:
return "END"
if any((f(x) == "END") for x in moves(h)):
return "P1"
if all((f(x) == "P1") for x in moves(h)):
return "V1"
if any((f(x) == "V1") for x in moves(h)):
return "P2"
if all((f(x) == "P2" or f(x) == "P1") for x in moves(h)):
return "V2"
for s in range(39, 0, -1):
h = 20, 10, s
if f(h) == "P1":
print(s, "P1")
Ошибка.
Попробуйте повторить позже
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат четыре кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может либо добавить в одну из куч два камня, либо увеличить количество камней в три раза. Чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда суммарное количество камней в кучах становится не менее . Победителем считается игрок, сделавший последний ход, т. е. первым получивший позицию, в которой в кучах будет или больше камней.
В начальный момент в первой куче было камней, во второй куче был каменей, в третьей было , в четвертой — камней, . Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.
Известно, что Петя выиграл своим первым ходом. Назовите минимальное значение , при котором это возможно.
def moves(h):
a, b, c, d = h
return (a + 2, b, c, d), (a, b + 2, c, d), (a, b, c + 2, d), (a, b, c, d + 2), (a * 3, b, c, d), (a, b * 3, c, d), (a, b, c * 3, d), (a, b, c, d * 3)
@lru_cache(None)
def f(h):
if sum(h) >= 70:
return "END"
if any((f(x) == "END") for x in moves(h)):
return "P1"
if all((f(x) == "P1") for x in moves(h)):
return "V1"
if any((f(x) == "V1") for x in moves(h)):
return "P2"
if all((f(x) == "P2" or f(x) == "P1") for x in moves(h)):
return "V2"
for s in range(39, 0, -1):
h = 9, 6, 8, s
if f(h) == "P1":
print(s, "P1")
Ошибка.
Попробуйте повторить позже
Два игрока, Петя и Ваня, играют в следующую игру. Они передвигают жучка по координатной плоскости. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может либо сместить жучка с помощью вектора (1; 2), либо вектора (0, 1). Игра завершается в тот момент, когда жучок находится на расстоянии больше 20 от начала координат. Победителем считается игрок, сделавший последний ход, т. е. первым получивший позицию, в которой жучок находится на расстоянии больше 20 от начала координат.
В начальный момент жучок был в точке с координатами , . Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.
Известно, что Петя выиграл своим первым ходом. Назовите минимальное значение , при котором это возможно.
from math import sqrt
def moves(h):
a, b= h
return (a + 1, b + 2), (a, b + 1)
@lru_cache(None)
def f(h):
if sqrt(h[0] ** 2 + h[1] ** 2) > 20:
return "END"
if any((f(x) == "END") for x in moves(h)):
return "P1"
if all((f(x) == "P1") for x in moves(h)):
return "V1"
if any((f(x) == "V1") for x in moves(h)):
return "P2"
if all((f(x) == "P2" or f(x) == "P1") for x in moves(h)):
return "V2"
for s in range(17, 0, -1):
h = 10, s
if f(h) == "P1":
print(s, "P1")
Ошибка.
Попробуйте повторить позже
Два игрока, Петя и Ваня, играют в следующую игру. Они передвигают жучка по координатной плоскости. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может либо сместить жучка с помощью вектора (1; 2), либо (0, 1), либо (10, 1). Игра завершается в тот момент, когда жучок находится на расстоянии больше 30 от начала координат. Победителем считается игрок, сделавший последний ход, т. е. первым получивший позицию, в которой жучок находится на расстоянии больше 30 от начала координат.
В начальный момент жучок был в точке с координатами , . Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.
Известно, что Петя выиграл своим первым ходом. Назовите минимальное значение , при котором это возможно.
from math import sqrt
def moves(h):
a, b= h
return (a + 1, b + 2), (a, b + 1), (a + 10, b + 1)
@lru_cache(None)
def f(h):
if sqrt(h[0] ** 2 + h[1] ** 2) > 30:
return "END"
if any((f(x) == "END") for x in moves(h)):
return "P1"
if all((f(x) == "P1") for x in moves(h)):
return "V1"
if any((f(x) == "V1") for x in moves(h)):
return "P2"
if all((f(x) == "P2" or f(x) == "P1") for x in moves(h)):
return "V2"
for s in range(25, 0, -1):
h = 15, s
if f(h) == "P1":
print(s, "P1")
Ошибка.
Попробуйте повторить позже
Два игрока, Рик и Морти, играют в следующую игру. Перед игроками лежит лист бумаги, на котором написано двоичное число. Игроки ходят по очереди, первый ход делает Рик. За один ход игрок может приписать справа или слева к имеющемуся на листе числу двоичную запись любого из чисел вида , где — произвольное натуральное число, либо приписать справа и слева от имеющегося на листе числа его копию. Например, имея двоичное число , за один ход можно получить путём копирования число или путём приписывания двоичной записи числа числа или .
Игра завершается в тот момент, когда количество единиц в двоичной записи числа на листе станет больше или равно . Победителем считается игрок, сделавший последний ход, т. е. первым получивший двоичное число, в записи которого использовано или более единиц.
В начальный момент единиц в числе было .
Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.
Известно, что Морти выиграл своим первым ходом после неудачного первого хода Рика. Укажите минимальное значение , когда такая ситуация возможна.
from functools import lru_cache def moves(heap): return heap + 2, heap * 3 @lru_cache(None) def game(heap): if heap >= 42: return ’END’ elif any(game(x) == ’END’ for x in moves(heap)): return ’WIN1’ elif any(game(x) == ’WIN1’ for x in moves(heap)): return ’LOSE1’ for s in range(1, 41): if game(s) == ’LOSE1’: print(s) break
Ошибка.
Попробуйте повторить позже
Два игрока, Аня и Амина, играют в следующую игру. Перед игроками лежит лист бумаги, на котором написано два двоичных числа. Игроки ходят по очереди, первый ход делает Аня. За один ход игрок может приписать справа к любому имеющемуся на листе числу двоичную запись любого из чисел вида , где — произвольное натуральное число, либо приписать слева и справа от имеющихся на листе чисел его копию. Например, имея двоичные числа и , за один ход можно получить путём копирования числа или или путём приписывания двоичной записи числа получить числа или .
Игра завершается в тот момент, когда суммарное количество единиц в двоичной записи чисел на листе станет больше или равно . Победителем считается игрок, сделавший последний ход, т. е. первым получивший суммарно в записи чисел или более единиц (Например и — сумма 4).
В начальный момент единиц в первом числе было единиц, а во втором .
Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.
Известно, что Амина выиграла своим первым ходом после неудачного первого хода Ани. Укажите минимальное значение , когда такая ситуация возможна.
Так как нас интересуют только единички, то очевидно, что при копировании числа у нас единичек становится в 3 раза больше. А при приписывании числа вида получаем приписывание 1 единички.
from functools import lru_cache def moves(h): a, b = h return (a + 1, b), (a, b + 1), (a * 3, b), (a, b * 3) @lru_cache(None) def f(h): if (sum(h) >= 100): return ’END’ if any(f(x) == ’END’ for x in moves(h)): return ’P1’ if any(f(x) == ’P1’ for x in moves(h)): return ’V1’ for s in range(1, 92): h = 7, s if f(h) == ’V1’: print(s) break
Ошибка.
Попробуйте повторить позже
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч один камень или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на камень больше, чем убирается). При любом из ходов кол-во камней в одной из куч должно измениться. Например, пусть в первой куче будет камней, во второй куче камней, а в третьей камней; такую позицию мы будем обозначать За один ход из позиции можно получить любую из четырёх позиций: Игра завершается в тот момент, когда суммарное количество камней в кучах становится не более
Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет или менее камней. В начальный момент в первой куче было камня, во второй куче было камня, в третьей куче камней, .
Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Описать стратегию игрока — значит описать, какой ход он должен сделать в любой ситуации, которая ему может встретиться при различной игре противника. В описание выигрышной стратегии не следует включать ходы играющего по этой стратегии игрока, не являющиеся для него безусловно выигрышными, т. е. не являющиеся выигрышными независимо от игры противника.
Известно, что Ваня выиграл своим первым ходом после неудачного первого хода Пети. Укажите максимальное значение когда такая ситуация возможна.
Решение руками
Наиболее неудачным для Пети ходом будет уменьшение наибольшей кучи в раза. Будем рассматривать этот случай. Тогда после этого Ваня уменьшает эту же кучу еще в раза и выигрывает.
Решение программой
from functools import lru_cache def moves(heap): a, b, c = heap m = [] if a >= 1: m += [(a - 1, b, c)] if a > 1: m += [((a + 1) // 2, b, c)] if b >= 1: m += [(a, b - 1, c)] if b > 1: m += [(a, (b + 1) // 2, c)] if c >= 1: m += [(a, b, c - 1)] if c > 1: m += [(a, b, (c + 1) // 2)] return m @lru_cache(None) def game(heap): if sum(heap) <= 16: return ’END’ elif any(game(x) == ’END’ for x in moves(heap)): return ’P1’ elif any(game(x) == ’P1’ for x in moves(heap)): return ’V1’ elif any(game(x) == ’V1’ for x in moves(heap)): return ’P2’ elif all(game(x) == ’P1’ or game(x) == ’P2’ for x in moves(heap)): return ’V2’ for s in range(100, 9, -1): if game((3, 4, s)) == ’V1’: print(s) break
Ошибка.
Попробуйте повторить позже
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит лист бумаги, на котором написано двоичное число. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может приписать справа или слева к имеющемуся на листе числу двоичную запись любого из чисел вида , где — произвольное натуральное число, либо приписать справа и слева от имеющегося на листе числа его копию. Например, имея двоичное число , за один ход можно получить путём копирования число или путём приписывания двоичной записи числа числа или .
Игра завершается в тот момент, когда количество единиц в двоичной записи числа на листе станет больше или равно . Победителем считается игрок, сделавший последний ход, т. е. первым получивший двоичное число, в записи которого использовано или более единиц.
В начальный момент единиц в числе было .
Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.
Известно, что Ваня выиграл своим первым ходом после неудачного первого хода Пети. Укажите минимальное значение , когда такая ситуация возможна.
Решение руками
Эта задача легко сводится к куче камней. За один ход можно добавить к куче камня, ведь любое число, имеющее вид имеет лишь единицы, либо умножить количество камней в куче на . Тогда очевидно, что первым ходом Петя утроил количество камней, после чего Ваня сделал то же самое. Значит нам подойдёт значение
Решение программой
from functools import lru_cache def moves(heap): return heap + 2, heap * 3 @lru_cache(None) def game(heap): if heap >= 42: return ’END’ elif any(game(x) == ’END’ for x in moves(heap)): return ’P1’ elif any(game(x) == ’P1’ for x in moves(heap)): return ’V1’ elif any(game(x) == ’V1’ for x in moves(heap)): return ’P2’ elif all(game(x) == ’P1’ or game(x) == ’P2’ for x in moves(heap)): return ’V2’ for s in range(1, 41): if game(s) == ’V1’: print(s) break
Ошибка.
Попробуйте повторить позже
У Виктора и Петра есть одинаковые наборы карточек. В каждом наборе карточек, на которых написаны числа от до по одному разу каждое. Петр и Виктор по очереди выкладывают на стол свои карточки (Начинает, конечно Первый, то есть Петр). Выигрывает тот, после хода которого сумма чисел на всех карточках, лежащих на столе, будет делится на .
Виктор выиграл своим первым ходом. Какое минимальное число могло быть записано на карточке, которую выложил на стол Петр?
Очевидно, что после двух ходов сумма не превышает , значит, если Виктор выиграл своим вторым ходом, то итоговая сумма составила ровно . Далее заметим, что если Петр выложил любую карточку, на которой записано меньше — Виктор не может доложить свою карточку и получить сумму . Значит минимальное число это .
Ошибка.
Попробуйте повторить позже
Двое играют в следующую игру. Есть кучка, в которой камней. Первый каждым своим ходом берет или камней. Второй каждым своим ходом берёт или камней. Ходят по очереди, начинает первый. Тот, кто не может сделать ход, проигрывает
Известно, что , , .
Кто побеждает при правильной игре? В ответе запишите номер игрока.
Ходы симметричны, а значит стратегия дополнения до 11. Первый выигрывает забрав 1 камень.
Ошибка.
Попробуйте повторить позже
На столе выложено спичек. Играют двое. Ход состоит в том, чтобы убрать со стола не более половины спичек, но не менее 1. Проигрывает тот, кто не может сделать ход. При . Какой игрок имеет выигрышную стратегию? В ответе укажите его номер (1 или 2 соответственно).
Заметим, что проигрышными являются позиции вида , где . Более того, позиция вида , где является позицией типа , а для произвольного числа , которое не является степенью двойки уменьшенной на один, есть всегда и ровно 1 выигрышный ход в позицию вида , достаточно лишь найти наибольшее такое , что 1 меньше чем , а позиция тогда является позицией типа .
Для решения номеров 19 и 20 достаточно лишь анализа всех позиций от 1 до 40.
19) Ответ: 2
Ошибка.
Попробуйте повторить позже
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу три камня, добавить шесть камней или увеличить количество камней в куче в три раза. При этом нельзя повторять ход, который этот же игрок делал на предыдущем ходу. Повторять чужие ходы и свои более старые ходы разрешается. Чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается, когда количество камней в куче становится не менее 68. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу, в которой будет 68 или больше камней. В начальный момент в куче было S камней, 1 S 67.
Укажите наименьшее значение S, при котором Петя не может выиграть за один ход, но у Пети есть выигрышная стратегия, позволяющая ему выиграть вторым ходом.
Решение программой
def f(x, s1, s2): # s1 - предыдущий ход, s2 - ПРЕДпредыдущий ход if x >= 68: return 0 t = [] # Делаем каждый ход, только если ПРЕДпредыдущий не совпадает с номером того, который собираемся сделать if s2 != 1: t += [f(x + 3, 1, s1)] # Делаем первый ход - прошлый предыдущий становится ПРЕДпредыдущим if s2 != 2: t += [f(x + 6, 2, s1)] if s2 != 3: t += [f(x * 3, 3, s1)] n = [i for i in t if i <= 0] if n: return -max(n) + 1 return -max(t) for i in range(1, 67 + 1): if f(i, 0, 0) == 2: print(i) break
Ошибка.
Попробуйте повторить позже
Петя и Вася играют в игру. Они начинают с целого положительного числа и поочередно выполняют над ним операции. В свой ход игрок может вычесть из один из его делителей, который не равен или . Игрок, который не может сделать ход проигрывает. Начинает Петя.
Известно, что Петя проиграл первым же ходом(не смог сделать первый ход). Найдите наибольшее возможное , не превышающее , для которого это могло случится.
Давайте рассмотрим 3 случая для этой задачи:
1) нечетно
2) четно, а не является степенью
3) — степень
Если нечетно, единственный ход - вычесть нечетный делитель (поскольку все делители нечетные). Делая это, мы получим четное число, которое не является степенью 2 (случай 2). Если является делителем , то также должен быть кратным , и так как нечетно, то не может быть степенью числа .
Если четно и не является степенью 2, это означает, что имеет нечетный делитель. Вычитая этот нечетный делитель, мы получим нечетное (случай 1).
Теперь давайте покажем, что вычитание нечетного делителя при каждом движении приводит к выигрышу. Простые числа проигрывают. Поскольку каждое простое число либо нечетно либо равно , стратегия дать другому игроку нечетное число работает, потому что оно либо будет простым (другой игрок проиграет), либо ваш соперник сделают ход и даст вам другое четное число, которое не является степенью . Вы можете продолжать этот процесс, потому что вы никогда не получите проигрышный номер, а поскольку игра должна заканчиваться после конечного числа ходов, ваш противник всегда должен проигрывать.
Итак, мы доказали, что нечетные числа проигрывают, а четные числа, которые не являются степенями , выигрывают.
Что делать, если - это степень ? Вы можете сделать две вещи за один ход, уменьшить вдвое или сделать четным числом, которое не является степенью (мы доказали, что это выигрышная позиция для другого игрока).
Единственный оптимальный ход - уменьшить вдвое, сделав его еще одной степенью 2. Игроки продолжают в
том же духе, пока один из них не получит 2, что является простым числом, так что он проигрывает. Если
четное, выигрывает Петя, в противном случае выигрывает Вася.
19.5) В задаче фактически просят найти наибольшее простое не превышающее 100. Ответ: 97
20.5) Получить ответ можно либо перебором начиная от 22, либо после полноценного решения задачи разбором всех
случаев. Ответ: 22
21.5) Следует провести полноценные рассуждения об анализе выигрышных и проигрышных позиций. Ответ: 100002.
Ошибка.
Попробуйте повторить позже
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в одну из куч (по своему выбору) один камень или увеличить количество камней в куче в два раза. Игра завершается в тот момент, когда суммарное количество камней в кучах становится не менее 110. Победителем считается игрок, сделавший последний ход, т.е. первым получивший такую позицию, при которой в кучах будет 110 или больше камней. В начальный момент в первой куче было 10 камней, во второй куче – 5 камней, а в третьей куче - S камней; .
Укажите такое S, при котором Петя не может выиграть за один ход, но при любом ходе Пети Ваня может выиграть своим первым ходом.
from functools import lru_cache @lru_cache(None) def f(a,b,c): if a+b+c >= 110:return 0 m = [f(a+1,b,c),f(a*2,b,c),f(a,b+1,c),f(a,b*2,c),f(a,b,c+1),f(a,b,c*2)] n = [i for i in m if i <= 0] if n:return -max(n) + 1 return -max(m) for i in range(1,95): if f(10,5,i) == -1: print(i)
Ошибка.
Попробуйте повторить позже
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками на координатной плоскости стоит фишка. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок увеличить координату X фишки на 2, или координату Y фишки на 3. Игра завершается в тот момент, расстояние от фишки до начала координат становится не менее 20. Победителем считается игрок, сделавший последний ход, т.е. первым получивший такую позицию, при которой расстояние от фишки до начала координат становится не менее 20. В начальный момент координата X фишки была равна 5, координата .
Укажите такую координату Y, при которой Петя не может выиграть за один ход, но при любом ходе Пети Ваня может выиграть своим первым ходом.
def f(x,y): if (x**2 + y**2)**0.5 >= 20:return 0 m = [f(x+2,y),f(x,y+3)] n = [i for i in m if i <= 0] if n:return -max(n) + 1 return -max(m) for y in range(1,20): if f(5,y) == -1: print(y)
Ошибка.
Попробуйте повторить позже
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в одну из куч 16 или 32 камня или увеличить количество камней в куче в два раза. Игра завершается в тот момент, когда в сумме в кучах будет не менее 150 камней. Победителем считается игрок, сделавший последний ход. В начальный момент в кучах было (6, 2S, 3S) камней, .
Назовите минимальное значение S, при котором Петя может выиграть своим первым ходом.
from functools import lru_cache lru_cache(None) def f(a, b, d, c = 0): if a + b + d >= 150: return 0 if c > 3: return 1000000 t = [f(a*2, b, d, c+1),f(a+16, b, d, c+1),f(a+32, b, d, c+1), f(a, b*2, d, c+1),f(a, b+16, d, c+1),f(a, b+32, d, c+1), f(a, b, d*2, c+1),f(a, b, d+16, c+1),f(a, b, d+32, c+1)] n = [i for i in t if i <= 0] if n: return -max(n) + 1 return -max(t) a = [] for i in range(1,67): if f(6, 2*i, 3*i) == 1: a.append(i) print(min(a))
Ошибка.
Попробуйте повторить позже
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в одну из куч сумму камней двух других куч или увеличить количество камней в куче в три раза. Игра завершается в тот момент, когда в сумме в кучах будет не менее 300 камней. Победителем считается игрок, сделавший последний ход. В начальный момент в кучах было (45, S, S+25) камней, .
Найдите количество значений S, при которых Петя может выиграть своим первым ходом.
from functools import lru_cache lru_cache(None) def f(a, b, d, c = 0): if a + b + d >= 300: return 0 if c > 4: return 1000000 t = [f(a*3, b, d, c+1),f(a+b+d, b, d, c+1),f(a, b*3, d, c+1), f(a, b + a + d, d, c+1),f(a, b, d*3, c+1),f(a, b, d+a+b, c+1)] n = [i for i in t if i <= 0] if n: return -max(n) + 1 return -max(t) a = [] for i in range(1,101): if f(45, i, i + 25) == 1: a.append(i) print(len(a))
Ошибка.
Попробуйте повторить позже
Два игрока, Петя и Ваня, играют в следующую игру. Задан некоторый набор символьных цепочек («слов»), в котором ни одно слово не является началом другого. Игра начинается с пустой строки, в конец которой игроки по очереди дописывают буквы, по одной букве за ход так, чтобы полученная цепочка на каждом шаге была началом одного из заданных слов. Первый ход делает Петя. Выигрывает тот, кто первый составит слово из заданного набора.
Определите, у кого из игроков есть выигрышная стратегия для набора слов ГЭНДАЛЬФЧЕРНЫЙ, ГЭНДАЛЬФСЕРЫЙ и ГЭНДАЛЬФБЕЛЫЙ.
В ответ запишите сначала первую заглавную букву имени игрока с выигрышной стратегией, а затем без пробелов и дополнительных символов количество ходов, которое ему потребуется сделать для победы.
Петя ходит первый, а значит он ставит все нечетные буквы, в то время как Ваня ставит четные. Значит Петя победит, если составит слово из нечетного количества букв, а Ваня - из четного.
Все три слова начинаются одинаково, поэтому при составлении ГЭНДАЛЬФ у игроков не будет вариантов, какую букву ставить. Буква после Ф по счету является девятой, значит её ставит Петя. Он может поставить либо Ч, либо С, либо Б. Если он поставит Ч, то составит слово ГЕНДАЛЬФЧЕРНЫЙ, которое имеет четное количество букв, что сделает победителем Ваню. А вот если он поставит С или Б, то победителем уже окажется сам Петя, так как остальные два слова имеют нечетную длину. Количество ходов же, которое потребуется сделать Пете, будет являться количеством букв на нечетных местах, их всего 7.
Ошибка.
Попробуйте повторить позже
Два игрока, Петя и Ваня, играют в следующую игру. Задан некоторый набор символьных цепочек («слов»), в котором ни одно слово не является началом другого. Игра начинается с пустой строки, в конец которой игроки по очереди дописывают буквы, по одной букве за ход так, чтобы полученная цепочка на каждом шаге была началом одного из заданных слов. Причём нельзя ставить две гласные подряд. Первый ход делает Ваня. Выигрывает тот, кто первый составит слово из заданного набора.
Определите, у кого из игроков есть выигрышная стратегия для набора слов ГОРОДА...ГОРОДА, ЗВУКИ...ЗВУКИ. В первом слове 123 раза повторяется последовательность букв ГОРОДА, во втором 125 раз повторяется последовательность букв ЗВУКИ.
В ответ запишите сначала первую заглавную букву имени игрока с выигрышной стратегией, а затем без пробелов и дополнительных символов количество ходов, которое ему потребуется сделать для победы.
Ваня ходит первый, а значит он ставит все нечетные буквы, в то время как Петя ставит четные. Значит Ваня победит, если составит слово из нечетного количества букв, а Петя - из четного.
Ваня ходит первый, а значит именно он определяет, какое слово из двух будут составлять игроки. Слово ГОРОДА...ГОРОДА имеет длину , а значит оно состоит из четного количества букв, из чего делаем вывод, что победит Петя.
Слово ЗВУКИ...ЗВУКИ имеет длину , а значит оно состоит из нечетного количество букв, из чего делаем вывод, что победит Ваня.
Значит Ваня выберет именно второе слово и сделает 313 ходов (на 1 больше, чем целая часть половины длины слова).
Ошибка.
Попробуйте повторить позже
Два игрока, Петя и Ваня, играют в следующую игру. Задан некоторый набор символьных цепочек («слов»), в котором ни одно слово не является началом другого. Игра начинается с пустой строки, в конец которой игроки по очереди дописывают буквы, по одной букве за ход так, чтобы полученная цепочка на каждом шаге была началом одного из заданных слов. Причём нельзя ставить две гласные подряд. Первый ход делает Петя. Выигрывает тот, кто первый составит слово из заданного набора.
Определите, у кого из игроков есть выигрышная стратегия для набора слов ЧЕРЕПИЦА и ЧЕРЕПАХАХАМ.
В ответ запишите сначала первую заглавную букву имени игрока с выигрышной стратегией, а затем без пробелов и дополнительных символов количество ходов, которое ему потребуется сделать для победы.
Петя ходит первый, а значит он ставит все нечетные буквы, в то время как Ваня ставит четные. Значит Петя победит, если составит слово из нечетного количества букв, а Ваня - из четного.
Все три слова начинаются одинаково, поэтому при составлении ЧЕРЕП у игроков не будет вариантов, какую букву ставить. Буква после П по счету является шестой, значит её ставит Ваня. Он может поставить либо И, либо А.
Если он поставит И, то составит слово ЧЕРЕПИЦА, которое имеет четное количество букв, что сделает победителем Ваню.
А вот если он поставит А, то победителем уже окажется Петя, так как слово ЧЕРЕПАХАХАМ имеет нечетную длину.
Количество ходов же, которое потребуется сделать Ване, будет являться количеством букв на четных местах, их всего 4.