Предмет: Информатика,
автор: sulu321
Задача Z. Угадай число
Имя входного файла: стандартный ввод
Имя выходного файла: стандартный вывод
Ограничение по времени: 2 секунды
Ограничение по памяти: 256 мегабайт
Это интерактивная задача. В процессе тестирования ваша программа будет взаимодействовать
с программой жюри с использованием стандартных потоков ввода/вывода.
Программа жюри загадала число от 1 до n, цель вашей программы — отгадать его. Для этого
ваша программа сообщает свои догадки программе жюри, а программа жюри отвечает, является
ли загаданное число большим, меньшим или равным сделанной догадке.
Выполнено неравенство 1 ≤ n ≤ 109
. Ваша программа должна сделать не более 30 догадок.
Протокол взаимодействия с программой жюри
Сначала ваша программа должна прочитать из стандартного потока ввода число n. Затем
протокол общения следующий: ваша программа выводит в стандартный поток вывода одну строку,
содержащую число — свою догадку о загаданном числе. Делайте сброс буфера потока вывода после
каждой догадки. Для этого используйте
• flush(output) в паскале или Delphi;
• fflush(stdout) или cout.flush() в С/C++;
• System.out.flush() в Java.
• sys.out.flush() в Python.
После этого программа должна считать из стандартного потока ввода одно число: ответ
программы жюри. Возможны следующие ответы:
• 1 — загаданное число больше последней догадки;
• −1 — загаданное число меньше последней догадки;
• 0 — последняя догадка верна. Считав 0, ваша программа должна завершиться.
Пример
стандартный ввод стандартный вывод
5
-1
1
0
3
1
2
Ответы
Автор ответа:
0
var
n, l, r, m, k: integer;
begin
read(n);
l := 1;
r := n;
while (r - l > 1) do
begin
m := (l + r) div 2;
writeln(m);
read(k);
if (k = 0) then
halt(0)
else if (k = 1) then
l := m
else
r := m;
end;
writeln(l);
read(k);
if (k <> 0) then
writeln(r);
end.
n, l, r, m, k: integer;
begin
read(n);
l := 1;
r := n;
while (r - l > 1) do
begin
m := (l + r) div 2;
writeln(m);
read(k);
if (k = 0) then
halt(0)
else if (k = 1) then
l := m
else
r := m;
end;
writeln(l);
read(k);
if (k <> 0) then
writeln(r);
end.
Похожие вопросы
Предмет: Алгебра,
автор: v895637z
Предмет: Математика,
автор: Аноним
Предмет: История,
автор: addblocker
Предмет: Математика,
автор: 88zlenko
Предмет: География,
автор: mystericmalina