К содержанию

Подтема 6 из 6 · дополнительный урок

Сумма, простота и ограничения на количества

Как найти наименьшую или наибольшую сумму цифр, считая количества символов, а не строки.

Сумма через количества

Дополнительный урок — для продвинутых: такие вопросы редки.

Таблица ниже один раз проходит строку из цифр 3, 6, 9 и заменяет 3 → 7, 6 → 8, 9 → 3. Как связаны длина входа и сумма цифр результата?

Состояниеλ369
q0λ, L, q1———
q1λ, S, q17, L, q18, L, q13, L, q1
Каждая цифра меняется по своей стрелке, как в подтеме 2: 3 → 7, 6 → 8, 9 → 3.

При однократной замене сумму результата выражают через количества входа — порядок цифр на неё не влияет. Пусть во входе a троек, b шестёрок и c девяток. Длина N = a + b + c, сумма результата S = 7a + 8b + 3c, и S + N = 8a + 9b + 4c. Дальше перебирают количества, а не строки.

Наименьшая сумма

Во входе есть все три цифры, а нечётных (3 и 9) не меньше пяти. Каково наименьшее S + N?

Чтобы сумма была наименьшей, берут ровно столько цифр, сколько требует условие, и самые дешёвые из них. Шестёрка нужна одна (b = 1): она ничего не даёт для условия о нечётных. Из нечётных девятка дешевле тройки (4 против 8), но одна тройка обязательна: a = 1, c = 4. S + N = 8 + 9 + 16 = 33, например 369999 → 783333.

Наибольшая сумма

Длина входа не больше 10, нечётных цифр не меньше четырёх. Каково наибольшее S + N?

Чтобы сумма была наибольшей, всю длину заполняют самыми дорогими цифрами — кроме мест, которые требует условие. Дороже всех шестёрка (9), но она чётная. Ровно четыре места — нечётным, из них дороже тройка (8): a = 4, b = 6. S + N = 32 + 54 = 86, например 3333666666.

Простая сумма

Какова наименьшая длина входа, в котором есть все три цифры, шестёрок чётное число, а сумма результата — простое число?

Простоту проверяют для каждой допустимой суммы: простое число больше 1 и делится только на 1 и на себя, а делители достаточно искать до √x. При N = 3 шестёрка одна — нечётно. При N = 4 шестёрок две: S = 7 + 16 + 3 = 26 — составное. При N = 5 шестёрок две, а троек и девяток 1 и 2: S = 7 + 16 + 6 = 29 — простое. Ответ 5, например 36699.

Вручную

Перебирай длины по возрастанию и для каждой — допустимые количества. Числа 0 и 1 не простые; 29 проверяется делителями 2, 3, 4, 5, потому что 6 · 6 = 36 > 29.

Python

Функция проверяет делители, пока d · d ≤ x:

def is_prime(x):    if x < 2:        return False    d = 2    while d * d <= x:        if x % d == 0:            return False        d += 1    return True

Перебор количеств, а не строк; внутренний диапазон оставляет хотя бы одну девятку:

for n in range(3, 20):    found = []    for a in range(1, n):        for b in range(1, n - a):            c = n - a - b            s = 7 * a + 8 * b + 3 * c            if b % 2 == 0 and is_prime(s):                found.append((a, b, c, s))    if found:        print(n, found)        break
5 [(1, 2, 2, 29)]

Итого

  • Суммачерез количества: S = 7a + 8b + 3c
  • Наименьшееграница + самые дешёвые цифры
  • Наибольшеедлина — самыми дорогими цифрами
  • Простоебольше 1, делители до √x
  • Примерстрока, на которой ответ достигается

Проверьте себя

Ответь сначала сам, потом открой ответ.

Вопрос 1
Таблица замены 3 → 7, 6 → 8, 9 → 3 выдала 7738. Какой был вход?
ОтветСкрыть ответ
Ответ
3396: замена обратима, 7 ← 3, 3 ← 9, 8 ← 6.
Вопрос 2
Есть все три цифры, нечётных не меньше шести. Каково наименьшее S + N?
ОтветСкрыть ответ
Ответ
37: a = 1, b = 1, c = 5, 8 + 9 + 20.
Вопрос 3
Длина не больше 12, нечётных не меньше четырёх. Каково наибольшее S + N?
ОтветСкрыть ответ
Ответ
104: a = 4, b = 8, 32 + 72.
Вопрос 4
Простое ли число 1?
ОтветСкрыть ответ
Ответ
Нет: простое число больше 1 и имеет ровно два делителя.

Практика

Для проверки ответов нужен JavaScript. Условия, подсказки и решения доступны ниже.

Вход по результату 7738

На ленте исполнителя МТ записана строка из цифр 3, 6, 9, остальные ячейки пустые (λ). Головка — в ближайшей пустой ячейке справа от строки, состояние q0. Программа:

Состояниеλ369
q0λ, L, q1———
q1λ, S, q17, L, q18, L, q13, L, q1

После выполнения на ленте 7738. Какая строка была записана в начале?

Введите слово — цифры подряд, без пробелов.

Наименьшее S + N

На ленте исполнителя МТ записана строка из цифр 3, 6, 9, остальные ячейки пустые (λ). Головка — в ближайшей пустой ячейке справа от строки, состояние q0. Программа:

Состояниеλ369
q0λ, L, q1———
q1λ, S, q17, L, q18, L, q13, L, q1

Во входе каждая цифра встречается хотя бы раз, нечётных цифр не меньше шести. S — сумма цифр результата, N — длина строки. Найди наименьшее значение S + N.

Введите число.

Наибольшее S + N

На ленте исполнителя МТ записана строка из цифр 3, 6, 9, остальные ячейки пустые (λ). Головка — в ближайшей пустой ячейке справа от строки, состояние q0. Программа:

Состояниеλ369
q0λ, L, q1———
q1λ, S, q17, L, q18, L, q13, L, q1

Длина входа не больше 12, нечётных цифр не меньше четырёх. S — сумма цифр результата, N — длина строки. Найди наибольшее значение S + N.

Введите число.

Наименьшая длина с простой суммой

На ленте исполнителя МТ записана строка из цифр 3, 6, 9, остальные ячейки пустые (λ). Головка — в ближайшей пустой ячейке справа от строки, состояние q0. Программа:

Состояниеλ369
q0λ, L, q1———
q1λ, S, q17, L, q18, L, q13, L, q1

Во входе есть все три цифры, количество шестёрок нечётное, а сумма цифр результата — простое число. Какова наименьшая длина входа?

Введите число.

Наибольшая простая сумма

На ленте исполнителя МТ записана строка длины 8 из цифр 3, 6, 9, остальные ячейки пустые (λ). Головка — в ближайшей пустой ячейке справа от строки, состояние q0. Программа:

Состояниеλ369
q0λ, L, q1———
q1λ, S, q17, L, q18, L, q13, L, q1

Во входе есть все три цифры, а сумма цифр результата — простое число. Найди наибольшую возможную сумму цифр результата.

Введите число.