Определите в 27 ричной записи числа количество цифр с числовым значением превышающим 9

Откройте простой способ посчитать в 27‑ричной системе количество цифры >9, чтобы быстро получать точный результат без лишних головоломок.

Магическая помощь часто требуется, когда нужно работать с необычными системами счисления. В этой статье мы подробно разберём, как именно подсчитать, сколько цифр в представлении числа в системе с основанием 27 имеют числовое значение больше 9.

Что такое 27‑ричная система счисления?

27‑ричная система – позиционная система счисления с основанием 27. В ней используются для записи цифр:

  • Цифры 0–9 (значения 0‑9).
  • Буквы A–Q (значения 10‑26).
    Это аналогично HEX, где после 9 идут A‑F, но в нашем случае диапазон шире.

Почему интересуют цифры >9?

Во многих алгоритмах (например, при подсчёте «сложности» записи) важны только «буквенные» цифры, т.е. те, чьи значения превышают 9. В системе с основанием 27 их ровно 17:

  1. A — 10
  2. B — 11
  3. C — 12
  4. D — 13
  5. E — 14
  6. F — 15
  7. G — 16
  8. H — 17
  9. I — 18
  10. J — 19
  11. K — 20
  12. L — 21
  13. M — 22
  14. N — 23
  15. O — 24
  16. P — 25
  17. Q — 26

Алгоритм подсчёта

Для любого целого неотрицательного числа n делаем следующее:

  1. Преобразуем n в 27‑ричную запись. Это обычно делается последовательным делением n на 27 с запоминанием остатков.
  2. Смотрим каждый полученный остаток (это цифра в системе с основанием 27).
  3. Если остаток ≥ 10, увеличиваем счётчик.
  4. Продолжаем, пока n не станет нулём.

Псевдокод

function countDigitsGT9(n):
 count = 0
 while n > 0:
 digit = n % 27 // остаток – текущая цифра
 if digit >= 10:
 count += 1
 n = n // 27 // целочисленное деление
 return count
 

Пример работы алгоритма

Возьмём число 2025 (в десятичной системе).

  1. 2025 ÷ 27 = 75, остаток 0 → цифра 0 (не считается).
  2. 75 ÷ 27 = 2, остаток 21 → цифра L (значение 21 > 9) → +1.
  3. 2 ÷ 27 = 0, остаток 2 → цифра 2 (не считается).

Реализация на популярных языках

Python

def count_gt9(num):
 cnt = 0
 while num:
 digit = num % 27
 if digit >= 10:
 cnt += 1
 num //= 27
 return cnt

print(count_gt9(2025)) # → 1
 

JavaScript

function countGT9(n) {
 let count = 0;
 while (n > 0) {
 const digit = n % 27;
 if (digit >= 10) count++;
 n = Math.floor(n / 27);
 }
 return count;
}console.log(countGT9(2025)); // 1
 

С++

int countGT9(long long n) {
 int cnt = 0;
 while (n > 0) {
 int d = n % 27;
 if (d >= 10) ++cnt;
 n /= 27;
 }
 return cnt;
}
 

Особенности и подводные камни

  • Отрицательные числа: обычный подход требует работать с абсолютным значением, а знак обрабатывается отдельно.
  • Большие числа: в JavaScript точность Number ограничена 2⁵³‑1, поэтому для очень больших значений лучше использовать BigInt или аналогичные типы.
  • Ведущие нули: они не влияют на количество «буквенных» цифр, так как значение их всегда 0.

Применение в реальной жизни

Подсчёт цифр > 9 в 27‑ричной записи может понадобиться в:

  1. Шифр‑системах, где кодируются символы алфавита (A‑Q) в виде цифр.
  2. Оптимизации хранилищ, где «буквенные» символы требуют больше битов.
  3. Анализе «сложности» представления числа в нестандартных системах счисления.

Определить количество цифр, значение которых превышает 9 в 27‑ричной записи числа, – задача простая, если разбить её на два шага: перевод в базу 27 и подсчёт цифр с остатком ≥ 10. Алгоритм работает за O(log₍₂₇₎ n) времени и не требует дополнительной памяти.

Теперь вы вооружены «магической помощью», позволяющей быстро решать эту задачу в любой среде разработки.


Дата публикации: 11:48:25

Понравилась статья? Поделиться с друзьями: