ФИПИ · ЕГЭ · все форматы ответа · 2475 заданий
Тип задачи: Преобразование записи числа.
| КЭС: | 3.2 Оценка сложности вычислений. Время работы и объём используемой памяти, их зависимость от размера исходных данных. Оценка асимптотической сложности алгоритмов. Алгоритмы полиномиальной сложности. Переборные алгоритмы. Примеры различных алгоритмов решения одной задачи, которые имеют различную сложность 3.6 Язык программирования (Паскаль, Python, Java, C++, C#). Типы данных: целочисленные, вещественные, символьные, логические. Ветвления. Сложные условия. Циклы с условием. Циклы по переменной. Обработка данных, хранящихся в файлах. Текстовые и двоичные файлы. Файловые переменные (файловые указатели). Чтение из файла. Запись в файл. Разбиение задачи на подзадачи. Подпрограммы (процедуры и функции). Использование стандартной библиотеки языка программирования |
| Тип ответа: | Развернутый ответ |
Ответ: 1) 3; 2) N = 14; 3) if d == 4: и R = R + 1
Нужно подсчитать количество цифр 4 в десятичной записи натурального N ≤ 10⁹. Рассмотрим исходную программу на Python. В начале R = 0. На каждом шаге d получает последнюю цифру, затем последняя цифра N отбрасывается. Условие проверяется до перехода к следующей цифре.
1. Работа исходной ошибочной программы при N = 241.
N = 241: d = 1; условие d != 4 истинно, поэтому R = 0 + 1 = 1. Далее N = 24.
N = 24: d = 4; условие ложно, R остаётся 1. Далее N = 2.
N = 2: d = 2; условие истинно, R = 1 + 2 = 3. Далее N = 0.
Цикл заканчивается; print(R) выводит 3. Программа складывает цифры, отличные от 4, вместо подсчёта четвёрок.
2. Подходящий пример: N = 14.
Сначала обрабатывается 4: прибавления нет. Затем обрабатывается 1: R становится равным 1. Выводится 1, и четвёрка в числе 14 действительно одна.
3. Исправляем ровно две ошибочные строки на Python, сохраняя остальные строки и их отступы.
Первая ошибочная строка: if d != 4:
Правильная строка: if d == 4:
Вторая ошибочная строка: R = R + d
Правильная строка: R = R + 1
При каждой встрече цифры 4 нужно прибавлять ровно одну найденную цифру, а не её значение.
Проверка исправления. После обработки любых k последних цифр значение R равно количеству цифр 4 среди них. Вначале обработано ноль цифр и R = 0. На следующем шаге счётчик увеличивается ровно на 1 тогда и только тогда, когда очередная цифра равна 4; значит, утверждение сохраняется. После удаления всех цифр N становится 0, цикл завершается, и выводится количество нужных цифр во всём исходном числе. При N ≤ 10⁹ выполняется не более десяти итераций.
Для исходного теста 241 исправленная программа печатает 1. Для N = 444 она печатает 3, а для N = 10⁹ — 0. Пример из пункта 2 сохраняет верный результат 1.
Ответ: 1) 3; 2) N = 14; 3) if d == 4: и R = R + 1.
Напишите пожелание к сайту или решению либо сообщите о найденной неточности в задании EGEINF108779.
Сообщение увидит только команда сайта: на странице оно не публикуется.
Комментарии к решению
Комментарии видны всем посетителям сайта.
Комментариев пока нет. Будьте первым.
Чтобы оставить комментарий, войдите или зарегистрируйтесь.