Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/64: Рейтинг темы: голосов - 64, средняя оценка - 4.67
38 / 39 / 7
Регистрация: 13.11.2020
Сообщений: 678

Задача ЕГЭ 21 (про кучи и камни)

29.12.2020, 11:18. Показов 13844. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в одну из куч один камень или увеличить количество камней в куче в четыре раза. Например, пусть в одной куче 6 камней, а в другой 9 камней; такую позицию мы будем обозначать (6, 9). За один ход из позиции (6, 9) можно получить любую из четырёх позиций: (7, 9), (24, 9), (6, 10), (6, 36). Чтобы делать ходы, у каждого игрока есть неограниченное количество камней.

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

В начальный момент в первой куче было 3 камня, во второй куче — S камней, 1 ≤ S ≤ 57.

Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Описать стратегию игрока — значит описать, какой ход он должен сделать в любой ситуации, которая ему может встретиться при различной игре противника. В описание выигрышной стратегии не следует включать ходы играющего по ней игрока, которые не являются для него безусловно выигрышными, то есть не гарантируют выигрыш независимо от игры противника.

Найдите минимальное значение S, при котором одновременно выполняются два условия:

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

— у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.12.2020, 11:18
Ответы с готовыми решениями:

21 задача, ЕГЭ, 2 кучи
Помогите сделать проверку на то, что Ваня не выигрывает первым ходом 100% (четный ход - Ваня, нечетный - Петя. 0 - стартовая позиция)....

Разбить камни на две кучи так, чтобы вес одной кучи не превышал веса другой более критической массы
Здраствуйте,уважаемые програмисты!Проблемы с задачкой Условие:Есть куча камней,каждый камень имеет вес,есть критическая масса.Нужно...

Задача про камни
Привет! Не могу понять с чего начинать копать..., помогите пожалуйста Дано: N камней различного веса. Необходимо разделить их на М куч...

7
 Аватар для Miryz
291 / 131 / 58
Регистрация: 24.11.2019
Сообщений: 532
29.12.2020, 13:03
Ychenyi, это задание решается вручную, а не с помощью программирования
0
38 / 39 / 7
Регистрация: 13.11.2020
Сообщений: 678
29.12.2020, 13:13  [ТС]
Miryz, разве? просто похожая игра Ним есть и там можно запрогить , а тут нет что ли?
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
29.12.2020, 13:26
Ychenyi, 15 15
1
38 / 39 / 7
Регистрация: 13.11.2020
Сообщений: 678
29.12.2020, 13:31  [ТС]
Gdez, а можно это решить с помощью кода? мне не так важен сейчас ответ, как код, с помощью которого можно будет решать все подобные задачи из ЕГЭ
0
38 / 39 / 7
Регистрация: 13.11.2020
Сообщений: 678
29.12.2020, 21:38  [ТС]
как это решить с помощью проги???
0
0 / 0 / 0
Регистрация: 13.06.2021
Сообщений: 1
13.06.2021, 14:57
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
def f(s): a, b = s; return [(a + 1, b), (a, b + 1), (a * 4, b), (a, 4 * b)]
 
 
def Win(s, d): return any([x[0] + x[1] >= 61 for x in f(s)])
 
 
def All(s, d): return not Win(s, d) and all([d[0](x, d[1:]) for x in f(s)])
 
 
def Any(s, d): return not Win(s, d) and any([d[0](x, d[1:]) for x in f(s)])
 
 
def w21(s, d):
    if Win(s, d):
        return False
    i = len([x for x in f(s) if d[0](x, d[1:])])
    j = len([x for x in f(s) if d[2](x, d[1:])])
    return i * j > 0 and i + j == len(f(s))
 
 
def g(d):
    return [s for s in range(1, 57) if d[0]((3, s), d[1:])]
 
 
print(g([Any, Win]))
print(g([Any, All, Win]))
print(g([w21, Any, All, Win]))
0
2 / 2 / 0
Регистрация: 07.09.2021
Сообщений: 9
11.10.2021, 00:00
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def f(x,y,p):
    if x+y >= 61 and (p==3 or p == 5):
        return True
    else:
        if x + y < 61 and p == 5:
            return False
        else:
            if x + y >= 61 :
                return False
    if p % 2 == 0:
        return f(x+1,y,p+1) or f(x*4,y,p+1) or f(x,y+1,p+1) or f(x,y*4,p+1)
    else:
        return f(x * 4, y, p + 1) and f(x + 1, y, p + 1) and f(x, y + 1, p + 1) and f(x, y * 4, p + 1)
for i in range(1,58):
    if f(3,i,1):
        print(i)
#В строчке if x + y < 61 and p == 5: так же нужно проверить p==3 если они ответы совпадают то это неправильные решения, если ответы только в p то это правильные решения
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.10.2021, 00:00
Помогаю со студенческими работами здесь

Задача про камни
У нас имеется N камней с весами w1, w2, w3,…, wn. Написать программу, которая распределит эти камни на две кучи так, чтобы разность весов...

Задача про камни-талисманы
Здравствуйте! Помогите пожалуйста с кодом программы. Уже 3 дня бьюсь над ней.Задачу нужно решить в Visual Prolog: Добавлено через 1...

Задача про камни-талисманы
Здравствуйте! Помогите пожалуйста с кодом программы. Уже 3 дня бьюсь над ней. Задачу нужно решить в Visual Prolog: Нужно решить...

Задача про камни-талисманы
Здравствуйте! Помогите пожалуйста с кодом программы. Уже 3 дня бьюсь над ней.Задачу нужно решить в Visual Prolog: Нужно решить следующую...

Задача про - Две кучи
Нужно написать программу для алгоритма Ограничение по времени: 2 секунды Ограничение по памяти: 64 мегабайт Имеется 2 ≤ N...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru