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