Ошибка.
Попробуйте повторить позже
Найдите такое минимальное , при котором у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети, и при этом у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.
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) == "V2":
print(s, "V2")
Ошибка.
Попробуйте повторить позже
Укажите минимальное значение , при котором у Пети есть выигрышная стратегия, причём Петя не может выиграть первым ходом, но может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
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) == "P2":
print(s, "P2")
Ошибка.
Попробуйте повторить позже
Два игрока, Петя и Ваня, играют в следующую игру. Они передвигают жучка по координатной плоскости. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может либо сместить жучка с помощью вектора (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 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) == "V2":
print(s, "V2")
Ошибка.
Попробуйте повторить позже
Укажите минимальное значение , при котором у Пети есть выигрышная стратегия, причём Петя не может выиграть первым ходом, но может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
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) == "P2":
print(s, "P2")
Ошибка.
Попробуйте повторить позже
Два игрока, Петя и Ваня, играют в следующую игру. Они передвигают жучка по координатной плоскости. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может либо сместить жучка с помощью вектора (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")
Ошибка.
Попробуйте повторить позже
Найдите такое минимальное , при котором у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети, и при этом у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.
from functools import lru_cache 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) > 80: return "V0" if sum(h) >= 60: 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" or f(x) == "V0") for x in moves(h)): return "V2" for s in range(29, 0, -1): h = 10, 10, 10, s if f(h) == "V2": print(s, "V2")
Ошибка.
Попробуйте повторить позже
Укажите минимальное значение , при котором у Пети есть выигрышная стратегия, причём Петя не может выиграть первым ходом, но может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
from functools import lru_cache 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) > 80: return "V0" if sum(h) >= 60: 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" or f(x) == "V0") for x in moves(h)): return "V2" for s in range(29, 0, -1): h = 10, 10, 10, s if f(h) == "P2": print(s, "P2")
Ошибка.
Попробуйте повторить позже
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат четыре кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может либо добавить в одну из куч два камня, либо увеличить количество камней в три раза. Чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда суммарное количество камней в кучах становится не менее , но не более . Победителем считается игрок, сделавший последний ход, т. е. первым получивший позицию, в которой в кучах будет или больше камней, но если количество камней в кучах оказалось больше , то победа автоматически достается другому игроку.
В начальный момент в первой куче было камней, во второй куче был каменей, в третьей было , в четвертой — камней, . Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.
Известно, что Петя выиграл своим первым ходом. Назовите минимальное значение , при котором это возможно.
from functools import lru_cache 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) > 80: return "V0" if sum(h) >= 60: 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" or f(x) == "V0") for x in moves(h)): return "V2" for s in range(29, 0, -1): h = 10, 10, 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) == "V2":
print(s, "V2")
Ошибка.
Попробуйте повторить позже
Укажите минимальное значение , при котором у Пети есть выигрышная стратегия, причём Петя не может выиграть первым ходом, но может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
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) == "P2":
print(s, "P2")
Ошибка.
Попробуйте повторить позже
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат четыре кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может либо добавить в одну из куч два камня, либо увеличить количество камней в три раза. Чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда суммарное количество камней в кучах становится не менее . Победителем считается игрок, сделавший последний ход, т. е. первым получивший позицию, в которой в кучах будет или больше камней.
В начальный момент в первой куче было камней, во второй куче был каменей, в третьей было , в четвертой — камней, . Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.
Известно, что Петя выиграл своим первым ходом. Назовите минимальное значение , при котором это возможно.
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")
Ошибка.
Попробуйте повторить позже
Найдите такое , при котором у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети, и при этом у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.
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) == "V2":
print(s, "V2")
Ошибка.
Попробуйте повторить позже
Укажите минимальное значение , при котором у Пети есть выигрышная стратегия, причём Петя не может выиграть первым ходом, но может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
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) == "P2":
print(s, "P2")
Ошибка.
Попробуйте повторить позже
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат три кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может либо добавить в одну из куч один камень, либо увеличить количество камней в два раза. Чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда суммарное количество камней в кучах становится не менее . Победителем считается игрок, сделавший последний ход, т. е. первым получивший позицию, в которой в кучах будет или больше камней.
В начальный момент в первой куче было камней, во второй куче был каменей, в третьей — камней, . Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.
Известно, что Петя выиграл своим первым ходом. Назовите минимальное значение , при котором это возможно.
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")