Махмуд и Ехаб проходят четвёртое испытание Доктора Зло.
Доктор Зло загадал бинарную строку длины n. Известно, что в ней есть хотя бы один символ '0' и хотя бы один символ '1'. Теперь он хочет, чтобы Махмуд и Ехаб нашли позицию хотя бы одного сивола '0' и позицию хотя бы одного символа '1' в этой строке. Чтобы это сделать, они могут задать Доктору Зло не более 15 вопросов следующего вида. Они говорят Доктору Зло бинарную строку длины n, а Доктор Зло говорит им расстояние Хемминга между их строкой и его строкой. Расстоянием Хемминга между двумя бинарными строками равной длины называется количество позиций, в которых они различаются. Вы можете найти строгое опредение расстояния Хемминга ниже.
Помогите Махмуду и Ехабу справиться с заданием Доктора Зло.
Вы получите вердикт Wrong Answer если
- Ваши запросы не будут соответствовать протоколу взаимодействия.
- Вы задали строго больше, чем 15 вопросов, при этом программа завершилась после превышения числа запросов. Учтите, что вы можете 15 раз задать Доктору Зло вопрос, а потом потратить ещё запрос, чтобы вывести ответ на задачу.
- Ответ на задачу неверен.
Вы получите вердикт
Idleness Limit Exceeded, если вы ничего не выведите или забудете сбросить буфер вывода (более подробно о том, как сбросить буфер вывода, можно прочитать ниже).
Если программа превышает максимальное число запросов, необходимо завершить её с кодом возврата 0, в противном случае вердикт может быть не Wrong Answer из-за чтения из закрытого потока.
Выходные данные
Чтобы вывести ответ на задачу, выведите "! pos0 pos1" (без кавычек), где pos0 и pos1 — это позиции какого-то символа '0' и какого-то символа '1' в строке (нумерация с 1). Не забудьте сбросить буфер вывода после вывода ответа!
Протокол взаимодействия
Чтобы задать вопрос, используйте формат "? s" (without quotes), где s строка, для которой вы хотите узнать расстояние Хемминга между ней и загаданной строкой. Не забудьте сбросить буфер вывода после вывода запроса!
После каждого запроса на стандартный ввод будет подано одно целое число — расстояние Хемминга между строкой из запроса и загаданной строкой.
Чтобы сбросить буфер вывода используйте:
- fflush(stdout) в C++;
- System.out.flush() в Java;
- stdout.flush() в Python;
- flush(output) в Pascal;
- Обратитесь к документации для других языков.
Взломы.
Для взлома выведите бинарную строку длиной не более 1000, содержащую хотя бы один символ '0' и хотя бы один символ '1'.
Примечание
Определение расстояния Хемминга: https://ru.wikipedia.org/wiki/Расстояние_Хемминга
В первом тестовом примере загаданная строка равна 101. Первый запрос равен 000, поэтому расстояние Хемминга равно 2. Во втором запросе загаданная строка всё ещё равна 101 а строка из запроса равна 001, поэтому расстояние Хемминга равно 1.
После нескольких запросов вы узнали, что символ на позиции 2 это '0', а символ на позиции 1 это '1', поэтому надо вывести "! 2 1".
Примеры
| № | Входные данные | Выходные данные |
|
1
|
3 2 1 3 2 1 0
|
? 000
? 001
? 010
? 011
? 100
? 101
! 2 1
|