Бесплатно
информатика
ЕГЭ
программирование
целые числа
делимость

Задание 25. Подсчёт чисел, удовлетворяющих условию — теория и разбор

6 просмотров0 скачиваний

Совет: выделите текст, чтобы спросить у ИИ, или наведите (на телефоне — тапните) на подчёркнутое слово — увидите подсказку.

Задание 25: подсчёт чисел, удовлетворяющих условию

На первый взгляд задание 25 выглядит как задачка на арифметику: делимость, остатки, диапазоны. На самом деле оно проверяет совсем другое — умение написать корректный полный перебор (иногда говорят brute force, «перебор в лоб»): программу, которая проходит по каждому числу диапазона и честно, без пропусков, проверяет заданное условие. Ошибаются в этом задании почти всегда не в математике, а в границах цикла или в логике проверки условия.

Что нужно знать

Что такое полный перебор

Полный перебор — это когда программа проверяет условие для каждого числа диапазона по очереди, ничего не пропуская и не угадывая закономерность заранее. Именно поэтому задание 25 нельзя решить «в уме» для больших диапазонов (там счёт может идти на миллионы чисел) — его решают программой, а не догадкой.

Главное: если хотя бы одно число из диапазона не попало под проверку — весь ответ может оказаться неверным, даже если алгоритм в остальном написан правильно.

Ключевой принцип: перебор корректен только тогда, когда он проверяет ВСЕ числа диапазона без пропусков — включая обе границы (левую и правую), если условие задачи говорит «принадлежащих отрезку» (это значит границы включаются).

Какие условия обычно комбинируют

Реальные варианты ЕГЭ комбинируют несколько типов условий одновременно:

  • Делимость — число делится на A без остатка (n % A == 0);
  • Остаток от деления — число при делении на A даёт остаток r (n % A == r), где r может быть любым, не только нулём;
  • Составные условия — делится на A, но не делится на (частый приём в вариантах ФИПИ, чтобы отсеять «слишком делимые» числа);
  • Цифровые свойства — сумма цифр числа, конкретная цифра на нужной позиции, число соответствует «маске» вида 3?12?14*5, где ? — любая цифра, * — любая последовательность цифр.

Обычно в одном задании соединяют два-три таких условия через логическое «И» — и весь секрет решения в том, чтобы верно записать эту связку в if.

Иллюстрация

Иллюстрация

Разбор примера

Условие: Сколько существует целых чисел на отрезке [900; 1100], которые при делении на 6 дают в остатке 3, а при делении на 5 дают в остатке 1?

Рассуждаем так: нужно найти числа n, для которых одновременно выполняются два условия — n mod 6 = 3 и n mod 5 = 1. Это классическая комбинация «остаток + остаток» — самый частый вид задания 25 в вариантах последних лет наряду с делимостью и масками (как в демоверсиях ФИПИ, где встречаются условия вроде «делится на 1917» или «делится на 5, 7 и 13, но не на их квадраты»). Подобрать такие числа по формуле можно (через китайскую теорему об остатках), но на экзамене надёжнее и безопаснее прогнать перебором — как и требует суть задания.

Показать решение и ответ

Переберём вручную все числа отрезка [900; 1100], которые дают остаток 3 при делении на 6 (это числа вида 900+3, 900+9, 900+15, … с шагом 6), и среди них отберём те, что дают остаток 1 при делении на 5:

  • 921 → 921 : 6 = 153 (ост. 3) ✓; 921 : 5 = 184 (ост. 1) ✓ — подходит
  • 951 → 951 : 6 = 158 (ост. 3) ✓; 951 : 5 = 190 (ост. 1) ✓ — подходит
  • 981 → 981 : 6 = 163 (ост. 3) ✓; 981 : 5 = 196 (ост. 1) ✓ — подходит
  • 1011 → 1011 : 6 = 168 (ост. 3) ✓; 1011 : 5 = 202 (ост. 1) ✓ — подходит
  • 1041 → 1041 : 6 = 173 (ост. 3) ✓; 1041 : 5 = 208 (ост. 1) ✓ — подходит
  • 1071 → 1071 : 6 = 178 (ост. 3) ✓; 1071 : 5 = 214 (ост. 1) ✓ — подходит
  • 1101 уже выходит за правую границу отрезка (1101 > 1100), дальше не считаем

Остальные числа, дающие остаток 3 от деления на 6 (927, 933, 939 и т.д.), при проверке на остаток 1 от деления на 5 не подходят — их можно проверить тем же способом, но в готовое решение они не попадают.

Ответ: 6

Как решить в Python

Ниже — программа, решающая тот же пример полным перебором. Это ровно то, что от вас ждут на экзамене: не формула, а честная проверка каждого числа.

count = 0                       # счётчик чисел, подходящих под условие
results = []                    # список самих чисел — для проверки и наглядности

for n in range(900, 1101):      # 1101, а не 1100 — правая граница 1100 включена
    if n % 6 == 3 and n % 5 == 1:   # проверяем оба условия одновременно
        count += 1               # нашли подходящее число — увеличиваем счётчик
        results.append(n)        # запоминаем само число

print(count)                    # выводим количество: 6
print(results)                  # выводим список: [921, 951, 981, 1011, 1041, 1071]

Здесь важна каждая деталь: range(900, 1101) — потому что в Python верхняя граница range не включается, а по условию число 1100 входит в отрезок, значит правую границу нужно указать на единицу больше. Именно на такой ошибке чаще всего теряют балл на реальном экзамене. Если прогнать этот код, он выдаст count = 6 и список [921, 951, 981, 1011, 1041, 1071] — то есть ровно то, что мы получили при ручном переборе.

Как решить в Excel

Задание 25 прекрасно моделируется в Excel — это удобно показать ученику как альтернативный взгляд на тот же перебор, только «руками» через таблицу.

  1. В столбец A, начиная с ячейки A2, заполните числа от 900 до 1100 (Excel: Главная → Заполнить → Прогрессия, шаг 1, предельное значение 1100) — это и есть ваш «диапазон перебора».
  2. В столбец B внесите формулу остатка от деления на 6: =ОСТАТ(A2;6).
  3. В столбец C — остаток от деления на 5: =ОСТАТ(A2;5).
  4. В столбец D — проверку обоих условий сразу: =ЕСЛИ(И(B2=3;C2=1);1;0) — единица, если число подходит, ноль — если нет.
  5. Протяните формулы B2:D2 вниз до последней строки диапазона (до числа 1100).
  6. Итоговый ответ — сумма столбца D: =СУММ(D2:D202) (если у вас 201 строка данных для чисел 900…1100). Это и есть количество чисел, удовлетворяющих условию.

Более компактный вариант — без вспомогательных столбцов, одной формулой массива: =СУММПРОИЗВ((ОСТАТ(A2:A202;6)=3)*(ОСТАТ(A2:A202;5)=1))

СУММПРОИЗВ здесь работает как встроенный цикл: сравнивает остаток каждого числа диапазона с нужным значением и суммирует единицы там, где совпали оба условия — тот же перебор, но без единой строчки кода.

Похожие материалы

Задание 25. Подсчёт чисел, удовлетворяющих условию — теория и разбор — Задание 25. Программирование. Обработка целых чисел, Информатика ЕГЭ | скачать