Подсчёт количества цифр в числе
💻 Информатика · 8 класс
Сколько цифр в числе
Часто в задачах нужно узнать, сколько цифр содержит целое число — например, чтобы проверить, трёхзначное оно или нет, или чтобы обработать каждую цифру по отдельности. Прямого способа спросить у числа его длину нет, поэтому применяют цикл, который постепенно «отрезает» от числа по одной цифре, считая выполненные шаги.
Этот приём опирается на целочисленную арифметику и встречается во многих задачах: подсчёт суммы цифр, проверка числа на палиндром, разбор числа по разрядам. Поэтому важно хорошо разобраться, как именно цикл сокращает число.
Идея алгоритма
Используются две операции целочисленной арифметики. Деление нацело на десять убирает последнюю цифру числа: например, из 4096 получается 409. Остаток от деления на десять позволяет получить саму эту последнюю цифру, если она нужна. Чтобы посчитать количество цифр, достаточно делить число нацело на десять, пока оно не станет нулём, и считать число выполненных шагов.
n = 4096
счётчик = 0
пока n > 0:
n = n div 10 (целая часть от деления)
счётчик = счётчик + 1
вывод: счётчик (равен 4)Как меняется число
Проследим выполнение по шагам. На каждом шаге число теряет одну цифру справа, а счётчик увеличивается на единицу.
| Шаг | Значение n | Счётчик |
|---|---|---|
| старт | 4096 | 0 |
| 1 | 409 | 1 |
| 2 | 40 | 2 |
| 3 | 4 | 3 |
| 4 | 0 | 4 |
Когда число становится нулём, условие n > 0 перестаёт выполняться, цикл останавливается, и в счётчике хранится количество цифр. Обратите внимание на особый случай: для числа ноль цикл не выполнится ни разу, потому что условие сразу ложно, хотя в записи ноля одна цифра. Этот случай обрабатывают отдельно, заранее присваивая ответу единицу.
Тот же приём годится и для родственных задач. Если в цикле не просто считать шаги, а на каждом шаге брать остаток от деления на десять, мы будем получать цифры числа по очереди, начиная с последней. Складывая эти остатки, легко найти сумму цифр; сравнивая их между собой, можно отыскать наибольшую или наименьшую цифру. Поэтому разбор числа по разрядам — базовый навык, на котором держится целая группа задач.
Важно ещё учитывать знак числа. Если число может быть отрицательным, его сначала приводят к положительному, иначе деление и сравнение с нулём дадут неверный результат. Обычно перед циклом берут модуль числа, и дальше алгоритм работает как обычно.
Частая ошибка: используют обычное деление вместо целочисленного. Тогда число превращается в дробь, никогда не становится ровно нулём, и цикл повторяется бесконечно. Нужна именно операция div — деление нацело.Кратко о главном
- Деление нацело на десять убирает последнюю цифру числа.
- Остаток от деления на десять даёт саму последнюю цифру.
- Цикл повторяют, пока число больше нуля; число шагов равно количеству цифр.
- Случай числа ноль обрабатывают отдельно, так как цикл для него не сработает.