Перебор и обработка цифр числа
💻 Информатика · 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 |
|---|---|---|---|---|
| 1 | 347 | 7 | 7 | 34 |
| 2 | 34 | 4 | 11 | 3 |
| 3 | 3 | 3 | 14 | 0 |
Когда n стало равно 0, цикл завершается. Сумма цифр числа 347 равна 14.
Заметьте, что цифры мы получаем справа налево: сначала единицы, затем десятки, потом сотни. Для суммы или количества порядок не важен, ведь от перестановки слагаемых результат не меняется. А вот если нужно вывести цифры в исходном порядке или построить новое число, направление приходится учитывать особо. Этот же приём работает в любой системе счисления: чтобы разобрать число по разрядам, делят и берут остаток не на 10, а на основание системы.
Другие задачи
- Количество цифр: вместо суммы увеличиваем счётчик на единицу на каждом шаге.
- Максимальная цифра: храним наибольшую из встреченных цифр.
- Число наоборот: строим новое число, домножая накопитель на 10 и прибавляя цифру.
- Сумма только чётных цифр: добавляем цифру лишь при условии
цифра mod 2 = 0.
Частые ошибки. Обязательно меняйте число внутри цикла (n := n div 10), иначе цикл станет бесконечным. Условие циклаn > 0: для числа 0 цикл не выполнится, это нужно учитывать отдельно. Не путайте остаток (последняя цифра) и деление нацело (отбрасывание цифры).
Перебор цифр — очень частая тема в заданиях ОГЭ и на олимпиадах. На его основе решают задачи про палиндромы, проверку делимости по сумме цифр, поиск чисел с заданными свойствами. Освоив этот базовый приём, вы сможете уверенно браться за самые разные задачи о натуральных числах.
Кратко о главном
- Цифры числа выделяют арифметикой: остатком и делением нацело.
- Остаток от деления на 10 — последняя цифра.
- Деление нацело на 10 убирает последнюю цифру.
- Цикл повторяют, пока число больше нуля.
- Так считают сумму, количество, максимум цифр и переворачивают число.