Как решать задание 14 ЕГЭ по информатике (системы счисления)?
Задание 14 про значение выражения в разных системах счисления или количество значащих нулей в записи числа в системе с основанием N. Постоянно ошибаюсь в переводах. Как надёжно решать задание 14?
2 ответа
Задание 14 — выражения и числа в разных системах счисления. Бывает: вычислить выражение и перевести результат, или посчитать количество цифр/единиц/нулей в записи числа по основанию N.
Главный совет — считай результат как обычное целое число, перевод доверь Python:
# перевод в любую систему N >= 2
def to_base(num, base):
if num == 0:
return '0'
digits = []
while num > 0:
digits.append(int(num % base))
num //= base
return digits[::-1] # список цифр от старшей
x = 7**5 + 3*7**2 # пример выражения
print(to_base(x, 7))
print(to_base(x, 7).count(0)) # сколько нулей
Для систем 2/8/16 есть готовые bin(), oct(), hex(), а int('1010', 2) переводит обратно в десятичную.
Если выражение со степенями того же основания (например, сумма степеней семёрки) — иногда видно ответ сразу: 7^5 в семеричной — это 1 и пять нулей. Но безопаснее посчитать.
Частая ошибка:
- путать «значащие нули» (внутри числа) и незначащие (нет таких в нормальной записи),
- ошибаться в ручном делении с остатком,
- неправильно прочитать основание системы.
Пусть Python переводит — твоя задача лишь верно записать выражение.
Полезная идея без кода: число вида (основание)^k в системе с этим основанием — это единица и k нулей. Например 8^3 в восьмеричной = 1000 (три нуля). Сумму таких степеней часто можно «сложить столбиком» прямо в нужной системе.
Но если выражение сложное, не мучайся — функция перевода на Python в 5 строк решает всё без арифметических описок.