Олимпиадный тренинг

Задача . F. Интеракдивная задача


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

Мы решили сыграть с вами в игру и загадали число \(x\) (\(1 \le x < n\)), где число \(n\) вам известно.

Вы можете делать запросы следующего вида:

  • + c: эта команда осуществляет присвоение \(x = x + c\) (\(1 \le c < n\)), а затем возвращает вам значение \(\lfloor\frac{x}{n}\rfloor\) (\(x\) делить на \(n\) и округлить вниз).

Вы победите, если угадаете текущее число, сделав не больше \(10\) запросов.

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

Взаимодействие начинается с чтения целого числа \(n\) (\(2 < n \le 1000\)), которое записано во входных данных на отдельной строке.

Далее вы можете сделать не более \(10\) запросов. Чтобы сделать запрос выведите в отдельной строке:

  • + c: эта команда выполнит присвоение \(x = x + c\) (\(1 \le c < n\)), а затем в отдельной строке выведет значение \(\lfloor\frac{x}{n}\rfloor\) (\(x\) делить на \(n\) и округлить вниз).

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

  • ! x: текущее значение \(x\).

После этого ваша программа должна завершить работу.

После вывода очередного запроса обязательно используйте функции очистки потока, чтобы часть вашего вывода не осталась в каком-нибудь буфере. Например, на С++ надо использовать функцию fflush(stdout), на Java вызов System.out.flush(), на Pascal flush(output) и stdout.flush() для языка Python.

Обратите внимание, что интерактор не является адаптивным.

Чтобы сделать взлом, используйте следующий формат: в единственной строке должны содержаться два числа \(x\) и \(n\), разделённые пробелом.

Примечание

В первом примере изначально \(x = 2\). После первого запроса значение \(x = 3\), а \(\lfloor\frac{x}{n}\rfloor = 1\).

Во втором примере также изначально \(x = 2\). После первого запроса значение \(x = 3\), а \(\lfloor\frac{x}{n}\rfloor = 0\). После второго — \(x = 4\), \(\lfloor\frac{x}{n}\rfloor = 0\). После третьего \(x=5\), \(\lfloor\frac{x}{n}\rfloor = 1\).


Примеры
Входные данныеВыходные данные
1 3

1
+ 1

! 3
2 5

0

0

1
+ 1

+ 1

+ 1

! 5
3 10

0

0

1

2
+ 2

+ 2

+ 3

+ 8

! 20

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
Комментарий учителя