Войти
или
Зарегистрироваться
Маркетплейс
Курсы
Учебник
Учебник 2.0
ЕГЭ
ОГЭ
Олимпиады
Рубрикатор
Компилятор
Онлайн Компилятор
Компилятор Python с отладкой
Питон - Черепашка
Эмулятор исполнителя Робот - Кумир
Редактор HTML Code
SQLite Studio - работа с БД
Статья Автор:
Деникина Мария
19_20_21
×
from math import ceil def moves(s): return s-5, ceil(s/4) target = 30 def gameover(s): return s <= target def win1(s): return not(gameover(s)) and any(gameover(x) for x in moves(s)) def lose1(s): return all(win1(x) for x in moves(s)) def win2(s): return not(win1(s)) and any(lose1(x) for x in moves(s)) def lose2(s): return all(win1(x) or win2(x) for x in moves(s)) and any(win2(x) for x in moves(s)) print("=19=") for s in range(31, 1000): if lose1(s): print(s) break print("=20=") p = [] for s in range(31, 1000): if win2(s): p.append(s) if len(p) == 2: print(*p) break print('=21=') for s in range(31, 1000): if lose2(s): print(s) break
×
def moves(s): return s+2, s+4, s*2 target = 125 def g_over(s): return s >= target def win1(s): return not g_over(s) and any(g_over(x) for x in moves(s)) def bad(s): return any(win1(x) for x in moves(s)) def loose1(s): return all(win1(x) for x in moves(s)) def win2(s): return not win1(s) and any(loose1(x) for x in moves(s)) def loose2(s): return all(win2(x) or win1(x) for x in moves(s)) and any(win2(x) for x in moves(s)) print('19:') for x in range(1, 125): if loose1(x): print(x) break print('20:') for x in range(1, 125): if win2(x): print(x) print('21:') for x in range(1, 125): if loose2(x): print(x) Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может: добавить в кучу 2 камня; добавить в кучу 4 камня; увеличить количество камней в куче в 2 раза. Например, из кучи в 20 камней за один ход можно получить кучу из 22, 24 или 40 камней. Чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается, когда количество камней в куче становится не менее 125. Победителем считается игрок, сделавший последний ход, то есть первый получивший кучу из 125 или более камней. В начальный момент в куче было S камней, 1≤𝑆≤124 . Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Укажите минимальное значение S, при котором Петя не может выиграть за один ход, но при любом ходе Пети Ваня может выиграть своим первым ходом.
×
ЕГЭ 2026 Март def moves(s): x = s[0] a = s[1] return [(x + 5, a), (x * 3, a), (x, a + 5), (x, a * 3)] target = 350 def g_over(s): return sum(s) >= target def win1(s): return not g_over(s) and any(g_over(x) for x in moves(s)) def bad(s): return any(win1(x) for x in moves(s)) def loose1(s): return all(win1(x) for x in moves(s)) def win2(s): return not win1(s) and any(loose1(x) for x in moves(s)) def loose2(s): return all(win2(x) or win1(x) for x in moves(s)) and any(win2(x) for x in moves(s)) a = 7 print('19:') for x in range(1, 343): if bad([x, a]): print(x) break print('20:') for x in range(1, 343): if win2([x, a]): print(x) print('21:') for x in range(1, 343): if loose2([x, a]): print(x)
×
ОСОБОЕ УСЛОВИЕ Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу один или четыре камня либо увеличить количество камней в куче в два раза. Например, имея кучу из 12 камней, за один ход можно получить кучу из 13, 16 или 24 камней. У каждого игрока, чтобы делать ходы, есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 35. Если при этом в куче оказалось нечетное количество камней, то победителем считается игрок, сделавший последний ход. В противном случае победителем считается его противник, при этом считается, что противник сделал свой ход. В начальный момент в куче было S камней; 1 ≤ S ≤ 34. Вопрос 1 Известно, что Ваня выиграл своим первым ходом после неудачного первого хода Пети. Укажите минимальное значение S, когда такая ситуация возможна. Вопрос 2 Для описанной игры, найдите минимальное и максимальное значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: • Петя не может выиграть за один ход; • Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания. Вопрос 3 Для описанной игры, найдите значение S, при котором одновременно выполняются два условия: • у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети; • у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом. Если найдено несколько значений S, в ответе запишите минимальное из них. Формат ввода ответов На каждое задание ответы пишите с новой строки. Если вы не знаете ответ на какое-либо задание, напишите в ответе любое число. Например, если ответ на вопрос 1 - 1, на вопрос 2 - 2 и 3, на вопрос 3 - 4, то ответы надо записать так: 1 2 3 4 def moves(s): return s+1, s+4, s*2 target = 35 def g_over(s): return s >= target and s % 2 != 0 def bad(s): return any(win1(x) for x in moves(s)) def loose0(s): return s >= target and s % 2 == 0 def win0(s): return s >= target and s % 2 != 0 def win1(s): return not g_over(s) and any(win0(x) for x in moves(s)) # win0, а не loose0 def loose1(s): return all(win1(x) or loose0(x) for x in moves(s))\ and any(win1(x) for x in moves(s)) def win2(s): return not win1(s) and any(loose1(x) for x in moves(s)) def loose2(s): return all(win2(x) or win1(x) for x in moves(s)) and any(win2(x) for x in moves(s)) print('19:') for x in range(1, 35): if bad(x): print(x) break print('20:') for x in range(1, 35): if win2(x): print(x) print('21:') for x in range(1, 35): if loose2(x): print(x)
×
Загрузка...
Чтобы оставить комментарий, необходимо авторизоваться
💬
Пока нет комментариев. Будьте первым!
Печать