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

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

29.12.2020, 11:18. Показов 13866. Ответов 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
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru