Форум сайта python.su
Здравствуйте друзья, прошу помощи, не могу понять условия задачи
Условие
Август и Беатриса продолжают играть в игру, но Август начал жульничать. На каждый из вопросов Беатрисы он выбирает такой вариант ответа YES или NO, чтобы множество возможных задуманных чисел оставалось как можно больше. Например, если Август задумал число от 1 до 5, а Беатриса спросила про числа 1 и 2, то Август ответит NO, а если Беатриса спросит про 1, 2, 3, то Август ответит YES.
Если же Бетриса в своем вопросе перечисляет ровно половину из задуманных чисел, то Август из вредности всегда отвечает NO. Наконец, Август при ответе учитывает все предыдущие вопросы Беатрисы и свои ответы на них, то есть множество возможных задуманных чисел уменьшается.
Первая строка содержит наибольшее число, которое мог загадать Август. Каждая следующая строка содержит очередной вопрос Беатрисы: набор чисел, разделенных пробелами. Последняя строка входных данных содержит одно слово HELP.
Для каждого вопроса Беатрисы выведите ответ Августа на этот вопрос. После этого выведите через пробел, в порядке возрастания, все числа, которые мог загадать Август после ответа на все вопросы Беатрисы.
входные данные
10
1 2 3 4 5
2 4 6 8 10
HELP
правильный ответ
NO
YES
6 8 10
входные данные
10
1
2
3
4
5
6
7
8
9
HELP
правильный ответ
NO
NO
NO
NO
NO
NO
NO
NO
NO
10
входные данные
16
1 2 3 4 5 6 7 8
9 10 11 12
13 14
16
HELP
правильный ответ
NO
NO
NO
NO
15
логически не могу понять, когда ставить yes а когда no. Благодарю за любую помощь
Офлайн
За такие задачи надо вкручивать гвоздь в головку того кто их сочинял
Офлайн
Загуглил первые два слова задачи:
http://pastebin.com/Qyua1PYQ
Офлайн
Редкостный экземпляр!
Август и Беатриса продолжают играть в игру, но Август начал жульничать.
Офлайн
FishHookпервую задачу я решил, она никак не относится к пониманию этой задачи.
продолжают играть в игру - в исходном сайте это ссылка! ССЫЛКА, КАРЛ!
Отредактировано badimalex (Янв. 24, 2017 11:04:28)
Офлайн
# numbers = set(range(1, int(input()) + 1)) while True: move = input() if move == 'HELP': print(*numbers) break else: move = set(map(int, move.split())) if len(move & numbers) > len(numbers) // 2: print('YES') numbers = {number for number in numbers if number in move} else: print('NO') numbers = {number for number in numbers if number not in move}
Отредактировано wi34rd (Янв. 24, 2017 12:09:30)
Офлайн
wi34rdспасибо большое
Офлайн