Задание OGEINF9BD91F: Анализ программы с ветвлением

ФИПИ · ОГЭ · все форматы ответа · 1585 заданий

Открыть решение ↓ Ошибка или пожелание

Тип задачи: Анализ программы с ветвлением.

Учебные темы: Язык программирования (Python, C++, Паскаль, Java, C#, Школьный Алгоритмический Язык). Система программирования: редактор текста программ, транслятор, отладчик. Переменная: тип, имя, значение. Целые, вещественные и символьные переменные. Оператор присваивания. Арифметические выражения и порядок их вычисления. Операции с целыми числами: целочисленное деление, остаток от деления. Ветвления. Составные условия (запись логических выражений на изучаемом языке программирования). Нахождение минимума и максимума из двух, трёх и четырёх чисел. Решение квадратного уравнения, имеющего вещественные корни. Цикл с условием. Алгоритм Евклида для нахождения наибольшего общего делителя двух натуральных чисел. Разбиение записи натурального числа в позиционной системе с основанием, меньшим или равным 10, на отдельные цифры. Цикл с переменной. Алгоритмы проверки делимости одного целого числа на другое, проверки натурального числа на простоту.

Впишите правильный ответ.

Ниже приведена программа, записанная на пяти языках программирования.

Алгоритмический язык

Паскаль

алг

нач

цел s, t, A

ввод s

ввод t

ввод A

если s > A или t > 12

  то вывод "YES"

  иначе вывод "NO"

все

кон

var A, s, t: integer;

begin

 readln(s);

 readln(t);

 readln(A);

 if (s > A) or (t > 12)

  then

    writeln('YES')

  else

    writeln('NO')

end.

Бейсик

Python

DIM s, t, A AS INTEGER

INPUT s

INPUT t

INPUT A

IF s > A OR t > 12 THEN

  PRINT "YES"

ELSE

  PRINT "NO"

ENDIF

s = int(input())

t = int(input())

A = int(input())

if (s > A) or (t > 12):

    print("YES")

else:

    print("NO")

C++

#include <iostream>

using namespace std;

 

int main() {

   int s, t, A;

   cin >> s;

   cin >> t;

   cin >> A;

   if (s > A || t > 12)

     cout << "YES" << endl;

   else

     cout << "NO" << endl;

   return 0;

 }

 

Было проведено 9 запусков программы, при которых в качестве значений переменных s и t вводились следующие пары чисел:

(13, 2); (11, 12); (–12, 12); (2, –2); (–10, –10); (6, –5); (2, 8); (9, 10); (1, 13).

Укажите наименьшее целое значение параметра А, при котором для указанных входных данных программа напечатает «YES» один раз.



i
СВОЙСТВА ЗАДАНИЯ
КЭС:
3.2 Язык программирования (Python, C++, Паскаль, Java, C#, Школьный Алгоритмический Язык). Система программирования: редактор текста программ, транслятор, отладчик. Переменная: тип, имя, значение. Целые, вещественные и символьные переменные. Оператор присваивания. Арифметические выражения и порядок их вычисления. Операции с целыми числами: целочисленное деление, остаток от деления. Ветвления. Составные условия (запись логических выражений на изучаемом языке программирования). Нахождение минимума и максимума из двух, трёх и четырёх чисел. Решение квадратного уравнения, имеющего вещественные корни. Цикл с условием. Алгоритм Евклида для нахождения наибольшего общего делителя двух натуральных чисел. Разбиение записи натурального числа в позиционной системе с основанием, меньшим или равным 10, на отдельные цифры. Цикл с переменной. Алгоритмы проверки делимости одного целого числа на другое, проверки натурального числа на простоту
Тип ответа:Краткий ответ
Номер: 9BD91F
НЕ РЕШЕНО Ответить

Решение задания OGEINF9BD91F

Ответ: 13

1. Разберём условие программы.
Сообщение YES выводится, когда условие истинно, а NO — когда оно ложно. Запишем проверяемое выражение словами:
(s больше A ИЛИ t больше 12).
Операция И требует истинности обеих частей, ИЛИ — хотя бы одной; НЕ меняет истину на ложь и наоборот. Сначала выполняются сравнения и действия в скобках, затем соответствующие логические операции. Равенство граничному числу проверяем особенно внимательно.

2. Определим зависимость от A.
NO получается только тогда, когда обе части ИЛИ ложны: t ≤ 12 И s ≤ A. Условие t ≤ 12 выполняется в запусках 1, 2, 3, 4, 5, 6, 7, 8. Остальные всегда дают YES и от A не зависят.
Выпишем значения s из подходящих запусков по возрастанию, сохраняя повторения:
−12, −10, 2, 2, 6, 9, 11, 13.
Число сообщений NO равно количеству чисел этого списка, не превосходящих A. Повторы относятся к разным запускам, поэтому каждый учитывается отдельно. Число YES равно 9 минус число NO.
Требуемое количество сообщений YES — 1; соответствующее количество NO — 8. A должно достигнуть последнего числа списка: A ≥ 13.

3. Выберем ответ из найденного диапазона.
Наименьшее целое значение в диапазоне — 13. Диапазон учитывает все целые значения A, в том числе отрицательные; произвольного ограничения поиска нет.

4. Проверка.
Подставим A = 13 в исходную программу и проверим каждый запуск:
Запуск 1: (13; 2) — вывод NO.
Запуск 2: (11; 12) — вывод NO.
Запуск 3: (−12; 12) — вывод NO.
Запуск 4: (2; −2) — вывод NO.
Запуск 5: (−10; −10) — вывод NO.
Запуск 6: (6; −5) — вывод NO.
Запуск 7: (2; 8) — вывод NO.
Запуск 8: (9; 10) — вывод NO.
Запуск 9: (1; 13) — вывод YES.
Получено 1 сообщение YES и 8 сообщений NO; требуемых YES — 1. При соседнем A = 12 сообщений YES уже 2. При увеличении A число NO не уменьшается, а число YES не увеличивается, поэтому за границами найденного диапазона нужное количество не появится снова.

Ответ: 13.

Помочь улучшить сайт

Напишите пожелание к сайту или решению либо сообщите о найденной неточности в задании OGEINF9BD91F.

Сообщение увидит только команда сайта: на странице оно не публикуется.

Комментарии к решению

Комментарии видны всем посетителям сайта.

Комментариев пока нет. Будьте первым.

Чтобы оставить комментарий, войдите или зарегистрируйтесь.