В
Все
М
Математика
А
Английский язык
Х
Химия
Э
Экономика
П
Право
И
Информатика
У
Українська мова
Қ
Қазақ тiлi
О
ОБЖ
Н
Немецкий язык
Б
Беларуская мова
У
Українська література
М
Музыка
П
Психология
А
Алгебра
Л
Литература
Б
Биология
М
МХК
О
Окружающий мир
О
Обществознание
И
История
Г
Геометрия
Ф
Французский язык
Ф
Физика
Д
Другие предметы
Р
Русский язык
Г
География
alishertursunov
alishertursunov
17.04.2023 03:25 •  Информатика

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

Показать ответ
Ответ:
Kusya2003
Kusya2003
12.07.2020 12:42
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.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота