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

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

HotLog


 

Сыграешь с Денисом?

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

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

Денису скучно и он хочет сыграть с вами в одну игру. Он загадал некоторое натуральное число N (1 ≤ N ≤ 109), и хочет, чтобы вы его угадали. Вы можете задавать Денису вопросы вида «? X», где X – натуральное число (1 ≤ X ≤ 109). После этого Денис сообщает вам остаток от деления числа X на N.

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

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

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

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

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

Пример

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

Примечание

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

  • В языке 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
 A. Горсть монет
 B. Количество байт
 C. Вложенные рамки
 D. Муравей
 E. День рождения
 F. Огонь и лёд
 G. Скучные запросы
 H. Мотивация
 I. Сыграешь с Денисом?
 J. Космический мусор

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