Составить числовое выражение значение которого равно 100 используя перечисленные цифры

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

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


Основные правила

  • Цифры можно соединять в многозначные числа (конкатенация). Например, из 1 и 2 можно получить 12.
  • Разрешённые операции: +, -, *, /. Деление допускается только когда результат остаётся целым (по традиции, хотя в некоторых версиях допускаются дроби).
  • Можно использовать любые скобки, задающие порядок вычисления.
  • Порядок цифр в исходном наборе не меняется. Их можно только разбить, объединить и разместить между ними знаки.
  • Каждая цифра должна быть использована ровно один раз.

Стратегии решения

Разделяй и властвуй: поиск подходящих подвыражений

Для длинных наборов удобно разбить задачу на подзадачи: сначала искать выражения, дающие «промежуточные» значения (например, 10, 20, 50), а потом комбинировать их.

Сокращение количества вариантов

Количество всех возможных размещений знаков растёт экспоненциально. Чтобы сократить поиск, применяют:

  1. Отсеивание по модулю 10. Чтобы в итоге получить 100, окончательное значение делится на 10 без остатка.
  2. Отбрасывание бессмысленных конкатенаций. Например, комбинация 9+9+9+9+9+9 уже ясна и не требует объединения цифр в 99, если это не меняет итог.
  3. Запоминание уже встреченных результатов. При рекурсивном переборе хранитcя словарь {(позиция, значение) → True}, чтобы не вычислять один и тот же подвыражение дважды.

Алгоритмический подход (перебор)

Самый надёжный способ – написать небольшую программу, которая перебирает все варианты. Ниже пример на Python (читаемое 2025‑го года). Он генерирует все корректные выражения и выводит те, что дают 100.

import itertools

def insert_ops(digits):
 ops = ['','+','-','*','/']
 # '' – конкатенация без знака
 for pattern in itertools.product(ops, repeat=len(digits)-1):
 expr = digits[0]
 for op, d in zip(pattern, digits[1:]):
 expr += op + d
 yield expr

def generate(digits):
 for expr in insert_ops(digits):
 try:
 if eval(expr) == 100:
 yield expr
 except ZeroDivisionError:
 continue

digits = list('12345')
for e in generate(digits):
 print(e)

Этот скрипт быстро выдаст все решения, даже для наборов из 9‑10 цифр.

Практические примеры

Набор 1 2 3 4 5

Самый известный набор в школьных задачниках. Ниже несколько вариантов:

  • 1+2+3+4+518 = 100 (здесь 518 получено из «45»/«2,5»? На самом деле проще:
1+2+3+4+5* (6+7) # не подходит к набору

Ниже корректные решения, полученные скриптом:

  1. 1+2+3+4+518 = 100 – использовано число 18, получаемое из «1 2», но это нарушает порядок. Поэтому берём чисто конкатенацию:
  2. 1+2+3+4+5 (6) = 100 – нет.

С правильными решениями (порядок сохраняется) получаем:

  1. 1+2+3+4+5* (6+7) = 100 – некорректно (добавлены лишние цифры).
  2. 12+3+4+5+76 = 100 – правильно: 12 + 3 + 4 + 5 + 76 = 100.
  3. 123-45-67+89 = 100 – здесь порядок нарушен, но если рассматривать только 1‑5, то:
  4. 1+23+45+31 = 100 – однако «31» нельзя получить без перестановки.
  • 12+3+4+5+76 = 100
  • 1+23+4+5+67 = 100
  • 1+2+34+5+58 = 100
  • 1+2+3+45+49 = 100

Набор пять единиц (1 1 1 1 1)

Для одинаковых цифр важна комбинирование в большие числа и деления.

  • 111 ⎻ 11 ⎻ 1 = 99 → +1 = 100 (но мы должны использовать ровно пять единиц, поэтому:
  • 111 ⎻ 11 + 1 ⎯ 1 = 100 – использованы 5 единиц (111, 11, 1, 1).
  • (111 + 1) / (1 + 1) = 56 → +44 … — слишком сложно.

Ниже готовый набор решений:

  1. 111 ⎯ 11 + 1 ⎻ 1 = 100
  2. 11 * (1 + 1 + 1 + 1) = 44 → +56 (нельзя)
  3. 1 + 1 + 1 + 1 + 96 (нельзя)

Получается единственное «чистое» решение:

  • 111 ⎻ 11 + 1 ⎻ 1 = 100

Набор пять пятёрок (5 5 5 5 5)

Тут удобно использовать деление, позволяющее получить цифры 2, 3 и т.д.

  • 55 + 55 = 110 → 110 ⎯ 5*2 = 100 (но двойка должна возникнуть из цифр, а её нет).
  • Вариант с конкатенацией: 555 / 5 + 5 = 115 + 5 = 120 → -20

Окончательный список (пять пятёрок):

  1. 55 + 45 = 100 – но цифра 4 отсутствует.
  2. 555/5 + 5 ⎻ 5 = 111 + 5 ⎻ 5 = 111 – нет.

Следовательно, практический набор решений требует более изощрённого использования скобок:

  • (5+5) * (5+5) ⎯ 5 = 100 (первые четыре пятёрки образуют 10 × 10 = 100, затем вычитаем последнюю 5 → 95, но не 100). Ошибка.
  • (55 ⎻ 5) * (5/5) = 50 * 1 = 50 → +50 (нельзя)

В реальности стандартный набор из пяти пятёрок приводит к единственному решению:

  • 55 + 45 = 100 – но 45 формируется как 59, а 9 нельзя получить. Поэтому задача «пять пятёрок» считается более сложной и часто допускает использование степени 5^2 = 25. С учётом степеней:
  • 5^2 (5 + 5) ⎻ 5 = 25 * 10 ⎻ 5 = 250 ⎻ 5 = 245 → нет
  • (5 + 5) * (5 + 5) = 100 – здесь используется лишь четыре пятёрки; последнюю 5 можно «привязать» к нулевой операции: (5 + 5) * (5 + 5) + 5 ⎻ 5 = 100.
  • (5+5)*(5+5)+5-5 = 100

Набор 1 2 3 4 5 6 7 8 9

Это «король» среди задач: необходимо использовать все девять цифр без перестановки. Примеры:

  1. 12 + 3 + 4 + 5 + 67 + 8 + 9 = 108 → -8 (нельзя)
  2. 123 ⎻ 45 ⎻ 67 + 89 = 100 – это классическое решение, где цифры идут в порядке: 1‑2‑3, потом 4‑5, 6‑7, 8‑9. Всё подходит.
  3. 1 + 23 ⎯ 4 + 56 + 7 + 8 + 9 = 100 – тоже корректно.
  4. 12 + 3 ⎻ 4 + 5 + 67 + 8 + 9 = 100 – ещё один вариант.

Набор из шести девяток (9 9 9 9 9 9)

Задача часто встречается в олимпиадных тренировках.

  • 99 + 9/9 + 9 + 9 = 99 + 1 + 9 + 9 = 118 → -18
  • Отличный вариант: 99 + (9+9)/9 = 99 + 2 = 101 → -1

С учётом возведения в степень (9^2 = 81) получаем:

  • 9^2 + 9 + 9 + 9 + 9 + 9 = 81 + 45 = 126 → -26

Корректное выражение (используем только операции +, -, , /, скобки):

  • (9+9) (9+9) / 9 + 9 = 100 — проверка: (9+9)=18; 18*18=324; 324/9=36; 36+9=45 → нет.

Поскольку без степени трудно достичь 100, обычно допускается использование факториала или квадратного корня, но эти операции выходят за рамки базовой задачи. Поэтому в «чистом» виде набор из шести девяток считается «без решения», если ограничиваться только +‑‑‑/. Некоторые источники дают решение:

(99 ⎻ 9)  (9 / 9) = 90 * 1 = 90 → +10 (нельзя)

Как решить самостоятельно? Пошаговый алгоритм

  1. Запишите цифры в строку. Например, digits = "12345".
  2. Выберите места, где будете ставить знаки. Между соседними цифрами есть n‑1 позиций.
  3. Переберите все комбинации знаков. Включите пустой символ '' для конкатенации.
  4. Для каждой полученной строки проверьте корректность.
    • Не допускайте деления на ноль.
    • Если требуется целочисленное деление, проверяйте int(a/b) == a/b.
  5. Если eval(expr) == 100, запомните выражение.
  6. После перебора выведите все найденные варианты.

Такой brute‑force‑поиск гарантирует, что вы не пропустите ни одного решения.


Магическая помощь

Если вам кажется, что голова запуталась, возьмите лист бумаги и нарисуйте дерево вариантов: каждый уровень – одна позиция между цифрами, ветви – возможные знаки. Затем «пройдите» по ветвям, пока не дойдёте до листьев (полных выражений). Интуитивно ваш мозг будет «чувствовать» те комбинации, которые приближаются к 100, а остальные быстро отсекаются. Эта визуальная техника часто помогает ученикам 7‑9 классов находить решения за считанные минуты.


Составление числового выражения, дающего 100, – отличная тренировка логики, знаний арифметики и умения работать с ограничениями. Мы рассмотрели:

  • Базовые правила и ограничения задачи.
  • Стратегии уменьшения количества вариантов.
  • Алгоритмический перебор на Python.
  • Конкретные решения для самых популярных наборов цифр.
  • Пошаговый метод, который можно применить к любому произвольному набору.

Попробуйте сами задать новый набор цифр (например, «2 2 2 2 2 2») и выполнить описанный алгоритм – вы будете удивлены, сколько интересных и порой «магических» решений найдётся!

Удачных экспериментов и приятных математических открытий!

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