Подтема 6 из 6 · дополнительный урок
Сумма, простота и ограничения на количества
Как найти наименьшую или наибольшую сумму цифр, считая количества символов, а не строки.
Сумма через количества
Дополнительный урок — для продвинутых: такие вопросы редки.
Таблица ниже один раз проходит строку из цифр 3, 6, 9 и заменяет 3 → 7, 6 → 8, 9 → 3. Как связаны длина входа и сумма цифр результата?
| Состояние | λ | 3 | 6 | 9 |
|---|---|---|---|---|
q0 | λ, L, q1 | — | — | — |
q1 | λ, S, q1 | 7, L, q1 | 8, L, q1 | 3, L, q1 |
При однократной замене сумму результата выражают через количества входа — порядок цифр на неё не влияет. Пусть во входе 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.
Функция проверяет делители, пока 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Итого
- Суммачерез количества: S = 7a + 8b + 3c
- Наименьшееграница + самые дешёвые цифры
- Наибольшеедлина — самыми дорогими цифрами
- Простоебольше 1, делители до √x
- Примерстрока, на которой ответ достигается
Проверьте себя
Ответь сначала сам, потом открой ответ.
7738. Какой был вход?ОтветСкрыть ответ
3396: замена обратима, 7 ← 3, 3 ← 9, 8 ← 6.ОтветСкрыть ответ
ОтветСкрыть ответ
ОтветСкрыть ответ
Практика
Для проверки ответов нужен JavaScript. Условия, подсказки и решения доступны ниже.
Вход по результату 7738
На ленте исполнителя МТ записана строка из цифр 3, 6, 9, остальные ячейки пустые (λ). Головка — в ближайшей пустой ячейке справа от строки, состояние q0. Программа:
| Состояние | λ | 3 | 6 | 9 |
|---|---|---|---|---|
| q0 | λ, L, q1 | — | — | — |
| q1 | λ, S, q1 | 7, L, q1 | 8, L, q1 | 3, L, q1 |
После выполнения на ленте 7738. Какая строка была записана в начале?
Введите слово — цифры подряд, без пробелов.
Подсказка
Замена обратима: найди, из какой цифры получается каждая.
Решение
Машина один раз заменяет 3 → 7, 6 → 8, 9 → 3. Обратно: 7 ← 3, 3 ← 9, 8 ← 6. Вход — 3396.
Ответ: 3396
Наименьшее S + N
На ленте исполнителя МТ записана строка из цифр 3, 6, 9, остальные ячейки пустые (λ). Головка — в ближайшей пустой ячейке справа от строки, состояние q0. Программа:
| Состояние | λ | 3 | 6 | 9 |
|---|---|---|---|---|
| q0 | λ, L, q1 | — | — | — |
| q1 | λ, S, q1 | 7, L, q1 | 8, L, q1 | 3, L, q1 |
Во входе каждая цифра встречается хотя бы раз, нечётных цифр не меньше шести. S — сумма цифр результата, N — длина строки. Найди наименьшее значение S + N.
Введите число.
Подсказка
Вырази S + N через количества троек, шестёрок и девяток.
Решение
S + N = 8a + 9b + 4c, где a, b, c — тройки, шестёрки, девятки входа. Одна шестёрка, одна тройка, остальные нечётные — дешёвые девятки: a = 1, b = 1, c = 5. 8 + 9 + 20 = 37.
Ответ: 37
Наибольшее S + N
На ленте исполнителя МТ записана строка из цифр 3, 6, 9, остальные ячейки пустые (λ). Головка — в ближайшей пустой ячейке справа от строки, состояние q0. Программа:
| Состояние | λ | 3 | 6 | 9 |
|---|---|---|---|---|
| q0 | λ, L, q1 | — | — | — |
| q1 | λ, S, q1 | 7, L, q1 | 8, L, q1 | 3, L, q1 |
Длина входа не больше 12, нечётных цифр не меньше четырёх. S — сумма цифр результата, N — длина строки. Найди наибольшее значение S + N.
Введите число.
Подсказка
Заполни длину самыми дорогими цифрами.
Решение
S + N = 8a + 9b + 4c, где a, b, c — тройки, шестёрки, девятки входа. Дороже всех шестёрка, но она чётная, поэтому ровно четыре места — нечётным, и из них дороже тройка: a = 4, b = 8. 32 + 72 = 104.
Ответ: 104
Наименьшая длина с простой суммой
На ленте исполнителя МТ записана строка из цифр 3, 6, 9, остальные ячейки пустые (λ). Головка — в ближайшей пустой ячейке справа от строки, состояние q0. Программа:
| Состояние | λ | 3 | 6 | 9 |
|---|---|---|---|---|
| q0 | λ, L, q1 | — | — | — |
| q1 | λ, S, q1 | 7, L, q1 | 8, L, q1 | 3, L, q1 |
Во входе есть все три цифры, количество шестёрок нечётное, а сумма цифр результата — простое число. Какова наименьшая длина входа?
Введите число.
Подсказка
Перебирай длины по возрастанию.
Решение
Сумма результата S = 7a + 8b + 3c. При длине 4 и 5 все допустимые суммы составные: 25, 21, 32, 28, 24, 34. При длине 6, например, a = 2, b = 1, c = 3: S = 14 + 8 + 9 = 31 — простое.
Ответ: 6
Наибольшая простая сумма
На ленте исполнителя МТ записана строка длины 8 из цифр 3, 6, 9, остальные ячейки пустые (λ). Головка — в ближайшей пустой ячейке справа от строки, состояние q0. Программа:
| Состояние | λ | 3 | 6 | 9 |
|---|---|---|---|---|
| q0 | λ, L, q1 | — | — | — |
| q1 | λ, S, q1 | 7, L, q1 | 8, L, q1 | 3, L, q1 |
Во входе есть все три цифры, а сумма цифр результата — простое число. Найди наибольшую возможную сумму цифр результата.
Введите число.
Подсказка
Проверь простоту каждой допустимой суммы, начиная с больших.
Решение
S = 7a + 8b + 3c при a + b + c = 8. Наибольшие допустимые суммы — 58, 57, 56, 55, 54 — составные, 53 — простое: например, a = 1, b = 5, c = 2.
Ответ: 53