ФИПИ · ЕГЭ · все форматы ответа · 2475 заданий
Тип задачи: Самостоятельное написание алгоритма.
| КЭС: | 3.2 Оценка сложности вычислений. Время работы и объём используемой памяти, их зависимость от размера исходных данных. Оценка асимптотической сложности алгоритмов. Алгоритмы полиномиальной сложности. Переборные алгоритмы. Примеры различных алгоритмов решения одной задачи, которые имеют различную сложность 3.6 Язык программирования (Паскаль, Python, Java, C++, C#). Типы данных: целочисленные, вещественные, символьные, логические. Ветвления. Сложные условия. Циклы с условием. Циклы по переменной. Обработка данных, хранящихся в файлах. Текстовые и двоичные файлы. Файловые переменные (файловые указатели). Чтение из файла. Запись в файл. Разбиение задачи на подзадачи. Подпрограммы (процедуры и функции). Использование стандартной библиотеки языка программирования |
| Тип ответа: | Развернутый ответ |
Ответ: Контрпример a = −2, b = 4, x = 0; убрать ввод и объявление x; при отрицательном a изменить направление неравенства
Решение.
1) Контрпример: a = −2, b = 4, x = 0. Исходная программа выводит x > 2. Но неравенство имеет вид −2x + 4 > 0, откуда −2x > −4 и x < 2: при делении на отрицательное число знак меняется. Например, x = 0 удовлетворяет исходному неравенству, а x = 3 — нет. Программа сообщает противоположный луч.
2) Лишние действия — объявление и ввод x. Искомую переменную не надо получать от пользователя: программа должна вывести множество всех подходящих x по заданным a и b. В исходном Pascal достаточно var a, b: real и readln(a, b). Аналогично в Бейсике убирается x из INPUT, а в Си — третий спецификатор и третий адрес из scanf и лишняя переменная x из объявления.
3) Разбираем все случаи. При a = 0 неравенство превращается в b > 0: если b положительно, подходит любое действительное x, иначе решений нет. При a > 0 получаем x > −ba. При a < 0 получаем x < −ba. Других случаев для действительного a нет. Строгая граница не входит в решение.
В исправленной программе сначала проверяем a = 0, поэтому никогда не делим на ноль. В ненулевых ветвях оператор truediv из стандартного модуля operator вычисляет обычное деление двух чисел. Программа на Python 3 читает только a и b, записанные через пробел в одной строке.
from operator import truediv
a, b = map(float, input().split())
if a == 0:
if b > 0:
print('любое число')
else:
print('нет решений')
elif a > 0:
print('x >', truediv(-b, a))
else:
print('x < ', truediv(-b, a), sep='')Проверка. Для a = −2, b = 4 программа выводит x < 2.0. Для a = 2, b = −4 выводится x > 2.0; при x = 2 левая часть равна нулю, поэтому граница исключена. При a = 0, b = 1 подходит любое число; при a = 0, b = 0 или b = −1 решений нет. Все ветви проверяются прямой подстановкой в ax + b > 0.
Ответ: Контрпример a = −2, b = 4, x = 0; убрать ввод и объявление x; при отрицательном a изменить направление неравенства.
Напишите пожелание к сайту или решению либо сообщите о найденной неточности в задании EGEINF3DA124.
Сообщение увидит только команда сайта: на странице оно не публикуется.
Комментарии к решению
Комментарии видны всем посетителям сайта.
Комментариев пока нет. Будьте первым.
Чтобы оставить комментарий, войдите или зарегистрируйтесь.