Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки

HotLog


 

Гена атакует

(Время: 1 сек. Память: 16 Мб Сложность: 28%)

Это интерактивная задача.

Программа-троян по имени Гена заразила ваш компьютер и теперь хочет поиграть с вами в игру. Гена загадал некоторое целое число X (0 ≤ X < 216) и хочет, чтобы вы его угадали, иначе вирус распространится по сети. Вы можете задавать Гене вопросы вида «? Y», где Y – целое число (0 ≤ Y < 216). После этого Гена выписывает своё и ваше числа в двоичном представлении, считает количество разрядов, в которых числа различаются, и сообщает это количество вам.

Как только вы посчитали, что знаете загаданное число, выведите сообщение «! Y», означающее, что Y – и есть это число. После вывода этого запроса общение с Геной прекращается. Также не забывайте, что Гена ответит не более чем на 20 вопросов.

Протокол взаимодействия

После каждого запроса «?» вашей программе будет сообщено в новой строке количество разрядов (в двоичном представлении), в которых ваше число отличается от загаданного.

Вы должны выводить корректные запросы в формате, описанном выше. Последним должен следовать единственный запрос вида «!», после чего ваша программа должна немедленно завершиться.

Ваша программа должна произвести не больше 20-ти запросов типа «?». Обратите внимание, что последний запрос, выводящий ответ, не входит в данные 20 запросов.

Пример

стандартный вводстандартный вывод
11
4
0
? 3
? 8
? 7
! 7

Примечание

Для корректной работы программы после каждой операции вывода данных выводите перевод строки, а также очищайте буфер вывода. Очистка буфера вывода производится следующим образом:

  • В языке Pascal: flush(output)
  • В С/С++: fflush(stdout) или cout.flush()
  • В Java: System.out.flush()
  • В Python: sys.stdout.flush() из библиотеки sys
  • В C# и Basic: Console.Out.Flush()

Для отправки решения задачи необходимо зарегистрироваться и авторизоваться!

 Язык программирования C++
 Решение олимпиадных задач
 Региональные олимпиады
 Книги Фёдора Меньшикова
 Тренировочные олимпиады
 Школьный этап
 Муниципальный этап
 Региональный этап
 Полуфинал ВКОШП
 Личное первенство СФУ
 2006 / 2007
 2007 / 2008
 2008 / 2009
 2009 / 2010
 2010 / 2011
 2011 / 2012
 2012 / 2013
 2013 / 2014
 2014 / 2015
 2015 / 2016
 2016 / 2017
 2017 / 2018
 2018 / 2019
 2019 / 2020
 2020 / 2021
 A. Яблоки
 B. Пирамида
 C. Маги
 D. Зубры
 E. Коллекция
 F. За стол!
 G. Фермер Тетракарп
 H. Саша и массив
 I. Гена атакует
 J. Длина числа

Красноярский краевой Дворец пионеров, (c)2006 - 2021, E-mail: admin@acmp.ru



Интернет магазин точных копий швейцарских часов www.allmedia.ru.