P
pro·school.ru
Каталог школ

Перебор и обработка цифр числа

💻 Информатика · 9 класс

Перебор цифр числа

Многие задачи требуют работать с отдельными цифрами натурального числа: найти их сумму, посчитать количество, переставить или проверить какое-то свойство. Поскольку число хранится целиком, а не как набор цифр, нужно научиться «разбирать» его на цифры с помощью арифметики. Главные инструменты здесь — деление нацело и взятие остатка.

Две ключевые операции

  • Остаток от деления на 10 (mod 10 или % 10) даёт последнюю цифру числа. Например, 'остаток от 347 при делении на 10' равен 7.
  • Деление нацело на 10 (div 10 или // 10) отбрасывает последнюю цифру. Например, 'нацело 347 на 10' равно 34.

Повторяя эти две операции, можно «откусывать» цифры по одной справа налево, пока число не станет равно нулю.

Алгоритм перебора

пока n > 0:
  цифра := n mod 10 // взяли последнюю цифру
  ... обработка цифры ...
  n := n div 10 // убрали последнюю цифру

Разбор примера: сумма цифр

Найдём сумму цифр числа 347. Заведём накопитель сумма := 0 и будем добавлять каждую отделённую цифру:

Шагnцифра (n mod 10)суммаn div 10
13477734
2344113
333140

Когда n стало равно 0, цикл завершается. Сумма цифр числа 347 равна 14.

Заметьте, что цифры мы получаем справа налево: сначала единицы, затем десятки, потом сотни. Для суммы или количества порядок не важен, ведь от перестановки слагаемых результат не меняется. А вот если нужно вывести цифры в исходном порядке или построить новое число, направление приходится учитывать особо. Этот же приём работает в любой системе счисления: чтобы разобрать число по разрядам, делят и берут остаток не на 10, а на основание системы.

Другие задачи

  • Количество цифр: вместо суммы увеличиваем счётчик на единицу на каждом шаге.
  • Максимальная цифра: храним наибольшую из встреченных цифр.
  • Число наоборот: строим новое число, домножая накопитель на 10 и прибавляя цифру.
  • Сумма только чётных цифр: добавляем цифру лишь при условии цифра mod 2 = 0.
Частые ошибки. Обязательно меняйте число внутри цикла (n := n div 10), иначе цикл станет бесконечным. Условие цикла n > 0: для числа 0 цикл не выполнится, это нужно учитывать отдельно. Не путайте остаток (последняя цифра) и деление нацело (отбрасывание цифры).

Перебор цифр — очень частая тема в заданиях ОГЭ и на олимпиадах. На его основе решают задачи про палиндромы, проверку делимости по сумме цифр, поиск чисел с заданными свойствами. Освоив этот базовый приём, вы сможете уверенно браться за самые разные задачи о натуральных числах.

Кратко о главном

  • Цифры числа выделяют арифметикой: остатком и делением нацело.
  • Остаток от деления на 10 — последняя цифра.
  • Деление нацело на 10 убирает последнюю цифру.
  • Цикл повторяют, пока число больше нуля.
  • Так считают сумму, количество, максимум цифр и переворачивают число.