Найти в Дзене
МОЙ РЕПЕТИТОР

Полное руководство по решению заданий №14. Системы Счисления.

В этой статье мы вместе подробно разберем решение основных видов заданий №14 ЕГЭ. Научимся анализировать выражения и выбирать правильный алфавит для неизвестных переменных → → также воспользуемся возможностями языка программирования Python для автоматизации этого процесса. Рекомендуется ознакомиться с предыдущей статьёй по системам счисления для более глубокого понимания материала 🔽 → Первый тип задания — это системы счисления с одной переменной. В рамках этого типа задач нужно ответить на следующие вопросы: что такое переменная (х) и какие значения она может принимать? Как создать и записать (х) в Python? Как преобразовать условие задачи в выражения на Python? И для чего нужен оператор break? Let's go! 🎈1 ПРИМЕР [РЕШЕНИЕ] ❶ Разбираемся с переменной (х) По условию задачи (х) — неизвестная цифра из алфавита 15 СС. Что это значит? И какие значения может принимать переменная (х)? При выборе значений для переменной необходимо всегда придерживаться данного правила: В таком случае, мы д
Оглавление

В этой статье мы вместе подробно разберем решение основных видов заданий №14 ЕГЭ. Научимся анализировать выражения и выбирать правильный алфавит для неизвестных переменных →

→ также воспользуемся возможностями языка программирования Python для автоматизации этого процесса.

Рекомендуется ознакомиться с предыдущей статьёй по системам счисления для более глубокого понимания материала 🔽

→ Первый тип задания — это системы счисления с одной переменной.

В рамках этого типа задач нужно ответить на следующие вопросы: что такое переменная (х) и какие значения она может принимать? Как создать и записать (х) в Python? Как преобразовать условие задачи в выражения на Python? И для чего нужен оператор break?

Let's go!

ОДНА СИСТЕМА СЧИСЛЕНИЯ ОДНА ПЕРЕМЕННАЯ

🎈1 ПРИМЕР

Условие задачи [1 ПРИМЕР ОДНА СС + ОДНА ПЕРЕМЕННАЯ]
Условие задачи [1 ПРИМЕР ОДНА СС + ОДНА ПЕРЕМЕННАЯ]

[РЕШЕНИЕ]

❶ Разбираемся с переменной (х)

По условию задачи (х) — неизвестная цифра из алфавита 15 СС. Что это значит? И какие значения может принимать переменная (х)?

При выборе значений для переменной необходимо всегда придерживаться данного правила:

Важное правило для определения алфавита в различных системах счисления.
Важное правило для определения алфавита в различных системах счисления.

В таком случае, мы должны самостоятельно определить диапазон значений для переменной (х). Рассуждаем ⤵

Выбор правильного алфавита для переменной (х) в соответствии с исходными выражениями.
Выбор правильного алфавита для переменной (х) в соответствии с исходными выражениями.

Приходим к выводу:

Если х — неизвестная цифра из алфавита 15 СС → значит, х может быть любой цифрой из алфавита 15 СС (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E)

Используйте данную таблицу для корректного выполнения заданий ⤵

Таблица для правильной записи диапазона переменной в зависимости от данной СС.
Таблица для правильной записи диапазона переменной в зависимости от данной СС.

❷ Какую именно цифру взять для переменной (х)?

Нет точного ответа на этот вопрос

Заранее неизвестно, какая именно цифра подойдет для решения. Поэтому ⤵

✅ Остается только перебрать все возможные варианты и выбрать подходящий

Идею перебора различных значений для переменной (х) можно реализовать с помощью цикла for. Python автоматически будет присваивать переменной (х) новое значение из набора вариантов. Благодаря этому циклу мы сможем пройтись по всем возможным значениям (х) и выбрать подходящее.

❸ Запускаем цикл for для переменной (х) Python

Для написания алгоритма вы можете использовать любую удобную среду (IDLE, PyCharm или Visual Studio). Для начинающих программистов рекомендую использовать именно IDLE.

Пример работы цикла for для перебора различных вариантов переменной (х).
Пример работы цикла for для перебора различных вариантов переменной (х).

Пояснение к алгоритму:

  • i — переменная цикла (счётчик цикла). Можно присвоить любое имя
  • Благодаря циклу for мы можем постепенно получить каждое значение переменной х (i = 0, i = 1, ... i = E)
  • end = ' ' — вывод на экран всех значений переменной (i) через пробел, в одну строку. Вы можете написать print(i) и значения будут выведены в столбик. Данный оператор используется исключительно для удобства и экономии пространства 😊

🔜 Для лучшего понимания принципов работы цикла for, рекомендую ознакомиться со следующим материалом:

Полный гайд по циклу FOR в Python
МОЙ РЕПЕТИТОР20 сентября 2024

Создание чисел (123х5 и 1х233)

По условию наши числа имеют вид: 123х5 и 1х233. Вместо переменной (х) может быть любая цифра из 15 СС. Подставим возможные значения вместо (х):

Возможные значения чисел (123х5 и 1х233) с учетом 15 СС.
Возможные значения чисел (123х5 и 1х233) с учетом 15 СС.

Удалось определить диапазон чисел для переменной x (от 0 до Е). Также мы определились с тем, как этот диапазон получить с помощью Python (цикл for). Но возникает вопрос, как теперь получить необходимые числа?

✅ Для этого будем использовать конкатенацию (склеивание) строк

Конкатенация

— процесс объединения двух или более строк в одну. Способ склеивания строк вместе.

'You' + 'are' + 'best' + '!' = 'Youarebest!'

В качестве примера возьмем х = '7AE'. То есть х будет принимать значения 7, А, Е. Запустим цикл for по значениям х. Создадим две переменные one и two. Запишем новые числа в эти переменные ⤵

Пример создания чисел с помощью конкатенации строк.
Пример создания чисел с помощью конкатенации строк.

конкатенация (склеивание) строк работает только для типа (str)

Это значит, что в Python можно соединять (склеивать) только строки (тип данных str) между собой. Если вы попробуете соединить строку с числом, то Python выдаст ошибку. Как склеивание кусочков бумаги — можно склеить только бумажки (строки), а не, скажем, бумагу и кирпич!

Складывать можно отдельно числа с числами (int) + (int) или строки со строками (str) + (str)

❻ Избегаем ошибок

С помощью цикла for и конкатенации удалось получить искомые числа. Следующий этап это вычисление суммы чисел и проверка на кратность.

Как найти сумму в Python? Использовать знак сложения (+) ⤵

Код программы по созданию нескольких чисел и последующего их сложения.
Код программы по созданию нескольких чисел и последующего их сложения.

На выходе получились следующие числа: 1237517233, 123А51А233, 123Е51Е233

Если сложить 12375 + 17233 = 29 608

В чем ошибка? Почему получились такие числа?

Потому что была попытка сложения 2-ух переменных типа (str). В итоге, числа не складывались, а склеивались. Вместо обычного сложения (+) использовалась операция конкатенации (склеивания).

Как это исправить? → Изменить типы переменных

-10

Для изменения типа переменной с str на int необходимо использовать оператор int(). Данный метод преобразует строку в целое число ⤵

Пример ошибочного кода программы для преобразования чисел из типа str в тип int.
Пример ошибочного кода программы для преобразования чисел из типа str в тип int.

❗После запуска программы появляется ошибка. Почему?

  • ValueError — ошибка значения (в переводе с английского) или ошибка в
  • int() can't convert — int() не может преобразовать нестроковое значение с явной базой

Мы пытаемся преобразовать строку в целое число с помощью функции int(), но строка содержит символы, которые не могут быть интерпретированы как число.

ПРАВИЛЬНО

int('123' + '7' + '5') → 12375

✖ НЕ ПРАВИЛЬНО

int('123' + 'A' + '5') → Error

Python не сможет преобразовать строку '123A5' в целое число. Так как не существует цифры 'A'. Буква 'A' не является цифрой и не может быть частью целого числа.

Для устранения данной ошибки нужно вспомнить про ещё одну функцию метода int(). Перевод в 10 СС.

Синтаксис: int(x, base)

  • x — значение, которое нужно преобразовать в целое число (str)
  • base — основание системы счисления (от 2 до 36)

Благодаря функции int(), числа будут переведены сразу в 10 СС, что и требуется по условию. Для этого в функции int() необходимо указать основание СС в которую мы собираемся перевести. В нашем случае это будет 15.

Код программы для перевода чисел из 15 СС в 10 СС с помощью функции int().
Код программы для перевода чисел из 15 СС в 10 СС с помощью функции int().
-13

Условие (if) и проверка на кратность

  • if — это команда, которая помогает компьютеру принимать решения. Она говорит: "Если что-то верно, то сделай это"

По условию данной задачи, значение выражения (123х5 + 1х233) должно быть кратно 14. Кратность числа (выражения) в Python можно проверить с помощью оператора (%).

  • % — остаток от деления в Python

Если число можно разделить на 14, то ...

if sum1 % 14 == 0:

❽ Вывод на экран и целочисленное деление

По условию задачи необходимо найти частное от деления на 14. Для этого используем данный оператор ⤵

  • // — целочисленное деление в Python

В качестве ответа указываем частное от деления выражения (sum1) на 14

print(sum1 // 14)

  • print() — служебная команда, она используется для вывода текстовой информации на экран. Это как сказать компьютеру: «Покажи мне этот текст»

❾ Итоговое решение

🔥Алгоритм решения заданий ЕГЭ №14: Операции в одной СС

Решение Задания №14 ЕГЭ ОПЕРАЦИИ В ОДНОЙ СС.
Решение Задания №14 ЕГЭ ОПЕРАЦИИ В ОДНОЙ СС.

❿ Короткая запись:

В переменную sum1 сразу записывается сумма двух чисел. Не создаются переменные (one) и (two). Переменная (х) также не создаётся отдельно, а сразу идет перебор вариантов в цикле for.

Код программы

Решение Задания №14 ЕГЭ ОПЕРАЦИИ В ОДНОЙ СС (короткая запись)
Решение Задания №14 ЕГЭ ОПЕРАЦИИ В ОДНОЙ СС (короткая запись)

👏 Поздравляю! Получен верный ответ и программа работает без ошибок.

Про break

Оператор break используется для немедленного выхода из цикла. Это может быть полезно, когда вы хотите остановить выполнение цикла при выполнении определенного условия.

В решении можно не использовать break. В таком случае, время выполнения программы будет дольше. На экране могут появится несколько значений (несколько вариантов ответов).

  • Пример работы программы для цикла for без оператора break:
Пример работы программы для цикла for без оператора break.
Пример работы программы для цикла for без оператора break.
  • Пример работы программы для цикла for c оператором break:
Пример работы программы для цикла for с оператором break.
Пример работы программы для цикла for с оператором break.

Вывод значений переменной (i) прекратиться после (i = 2). Условие выполнено, оператор break сработал и завершил цикл for.

Оператор break может использоваться как в циклах for, так и в циклах while.

🎈2 ПРИМЕР [ОДНА СС + ОДНА ПЕРЕМЕННАЯ]

Условие задачи [2 ПРИМЕР ОДНА СС + ОДНА ПЕРЕМЕННАЯ]
Условие задачи [2 ПРИМЕР ОДНА СС + ОДНА ПЕРЕМЕННАЯ]

[РЕШЕНИЕ]

-19

Действуем по алгоритму:

х — будет принимать значения от 0 до K, так как переменная (х) находиться во всех трёх числах. Каждое из этих чисел записаны в системе счисления с основанием 21.

Допустимые значения для переменной (х):

  • 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A(10), B(11), C(12), D(13), E(14), F(15), G(16), H(17), I(18), J(19), K(20)

В условии необходимо проверить кратность данного выражения (82934х2 + 2924хх7 + 67564х8) в 10 СС на число 20:

  • if s % 20 == 0

Решение (короткая запись)

Код программы для решения задания №14 ЕГЭ Операции в одной СС.
Код программы для решения задания №14 ЕГЭ Операции в одной СС.
-21

В предыдущем решении можно столкнуться с рядом проблем. Так как числа записаны в системе счисления с основанием 21, значит алфавит этой СС состоит из 21 символа. От 0 до К (20).

Начиная с цифры 10 необходимо записывать соответствующие английские символы: А = 10, В = 11, С = 12 и так далее.

Что делать, если забыли или не знаете точный порядок английских символов?

🔝Существует альтернативный способ решения ⤵

Перевод чисел в 10 СС с помощью возведения в степень

Чтобы перевести число из любой СС в 10 СС, нужно выполнить следующие шаги:

  1. Пронумеруйте разряды числа справа налево, начиная с нуля.
  2. Умножьте каждую цифру числа на основание СС в степени, соответствующей её разряду.
  3. Сложите полученные результаты. Сумма будет являться десятичным эквивалентом данного числа.
Алгоритм перевода чисел из 2 СС в 10 СС. Без использования Python.
Алгоритм перевода чисел из 2 СС в 10 СС. Без использования Python.

Важное правило:

-23

Реализация данного алгоритма на Python ⤵

  • x = '106CF9' — исходная переменная
  • В переменную (а) записываем результат перевода (х) в 10 СС с помощью операций возведения в степень.
  • Для сравнения, в переменную (b) записываем результат перевода (х) в 10 СС с помощью встроенной функции int().

Мысленно пронумеровываем исходное число справа ← налево. Умножаем самую правую цифру числа (9) на основание (18) в степени (0). Прибавляем следующую цифру (F), умноженную на основание (18), в степени (1) и так далее.

Программа для перевода '106CF9' в 10 СС с помощью операций возведения в степень.
Программа для перевода '106CF9' в 10 СС с помощью операций возведения в степень.

❗Важный момент

Данный способ работает только до 36 СС включительно. В рамках решения задач этого вполне достаточно.

Вместо int('F', 18) можно записать просто число 15, эквивалент латинского символа (F = 15)

  • int('F', 18) = 15
  • int('С', 18) = 12

Решение [2 ПРИМЕР] с помощью операций возведения в степень ⤵

Код программы для решения задания №14 ЕГЭ Операции в одной СС (2 СПОСОБ).
Код программы для решения задания №14 ЕГЭ Операции в одной СС (2 СПОСОБ).

[1 способ] → for x in '0123456789ABCDEFGHIJK'

[2 способ] → for x in range(0, 21)

Теперь (х) принимает значения от 0 до 20. Каждое значение это соответствие символам ('0' = 0, '1' = 1 и так далее).

Промежуточные выводы:

  • Если система счисления меньше 37, можно использовать встроенную функцию в Python int()
  • С помощью возведения в степень можно решать любой вид заданий. Для любых оснований СС

🎈3 ПРИМЕР [ОДНА СС + ОДНА ПЕРЕМЕННАЯ]

🔥Задача повышенного уровня сложности

Условие задачи [3 ПРИМЕР ОДНА СС + ОДНА ПЕРЕМЕННАЯ]
Условие задачи [3 ПРИМЕР ОДНА СС + ОДНА ПЕРЕМЕННАЯ]

[Решение]

С помощью встроенной функции int() можно переводить числа в 10 СС только до 36 СС

По условию задачи, числа записаны в 97 СС. Функция int() не позволяет перевести эти числа из 97 СС в 10 СС →→→ воспользуемся алгоритмом возведения в степень →→→

Код программы для решения задания №14 ЕГЭ Операции в одной СС [3 ПРИМЕР].
Код программы для решения задания №14 ЕГЭ Операции в одной СС [3 ПРИМЕР].
Принцип работы алгоритма по возведению в степень для перевода из 97 СС в 10 СС.
Принцип работы алгоритма по возведению в степень для перевода из 97 СС в 10 СС.

Пояснение к алгоритму:

Запускаем цикл для перебора значений переменной (х)

  • for x in range(96, -1, -1)

По условию задачи нужно определить наибольшее значение (х). Лучше запустить цикл от большего значения к меньшему (по убыванию). Как только значение будет найдено, программа завершится.

Чтобы запустить цикл по убыванию необходимо указать верхнюю границу (96), нижнюю границу (-1) и шаг изменения переменной (-1)

for x in range(96, -1, -1) → цикл от 96 до 0 с шагом (-1) → х = 96, 95, 94 ... 0

❗Будьте очень внимательны при переводе чисел из 97 СС в 10 СС! Проверяйте каждый символ, каждый знак и степень чисел.

🎈4 ПРИМЕР [ОДНА СС + ОДНА ПЕРЕМЕННАЯ]

Условие задачи [4 ПРИМЕР ОДНА СС + ОДНА ПЕРЕМЕННАЯ]
Условие задачи [4 ПРИМЕР ОДНА СС + ОДНА ПЕРЕМЕННАЯ]

[Решение]

  • Добавилась ещё одна неизвестная переменная А

А — натуральное число (по условию)

Так как точное значение для переменной (А) не известно, необходимо использовать цикл for для перебора возможных значений.

Натуральные числа начинаются с 1, поэтому и range() для цикла for будет начинается с единицы.

Верхнюю границу для диапазона range() выбираем самостоятельно. Лучше взять с запасом. Например: 100 или 1000 ⤵

for A in range(1, 100)

  • Диапазон для переменной (х)

По условию задачи переменные M и N записаны в девятеричной СС. Поэтому искомый алфавит для переменной (х) : 012345678

  • Изменения в условии задачи

(М + N) кратно А — сумма переменных М и А должна делиться без остатка на N

Для проверки кратности необходимо использовать данный оператор:

  • % — остаток от деления в Python

(M + A) % N == 0

Решение [4 ПРИМЕР] ⤵

Решение [4 ПРИМЕР] с помощью встроенной функции int().
Решение [4 ПРИМЕР] с помощью встроенной функции int().

Следующий тип заданий включает различные основания. Нужно будет учитывать основание каждого выражения. Научиться правильно определять алфавит для неизвестной переменной 🔜

РАЗНЫЕ СИСТЕМЫ СЧИСЛЕНИЯ + ОДНА ПЕРЕМЕННАЯ

📍1 ПРИМЕР

Условие задачи [1 ПРИМЕР РАЗНЫЕ СС + ОДНА ПЕРЕМЕННАЯ]
Условие задачи [1 ПРИМЕР РАЗНЫЕ СС + ОДНА ПЕРЕМЕННАЯ]

[Решение]

По условию задачи переменной х обозначена неизвестная цифра из алфавита ДЕСЯТИЧНОЙ СС

Важная информация в условии задачи. Какие значения может принимать переменная х.
Важная информация в условии задачи. Какие значения может принимать переменная х.

х неизвестная цифра из алфавита 10 СС → переменная (х) может принимать значения от 0 до 9

→ x = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

Далее решаем по алгоритму:

  • Запускаем цикл (for) для переменной (х)

for x in '0123456789'

  • Записываем условие (if) для кратности данного выражения на 121 (%)

☑ if sum1 % 121 == 0

  • В ответе необходимо указать частное от деления выражения на 121

☑ print(sum1 // 121)

Решение задачи [1 ПРИМЕР РАЗНЫЕ СС + ОДНА ПЕРЕМЕННАЯ]
Решение задачи [1 ПРИМЕР РАЗНЫЕ СС + ОДНА ПЕРЕМЕННАЯ]

📍2 ПРИМЕР [РАЗНЫЕ СС + ОДНА ПЕРЕМЕННАЯ]

Условие задачи [2 ПРИМЕР РАЗНЫЕ СС + ОДНА ПЕРЕМЕННАЯ]
Условие задачи [2 ПРИМЕР РАЗНЫЕ СС + ОДНА ПЕРЕМЕННАЯ]

[Решение]

❗Обратите внимание на один момент из условия задачи:

«В записи чисел переменной х обозначены ДОПУСТИМЫЕ В ДАННЫХ СИСТЕМАХ СЧИСЛЕНИЯ НЕИЗВЕСТНЫЕ ЦИФРЫ»

Теперь, сравним условие задачи из предыдущего примера ⤵

В первом случае речь идет про алфавит десятичной СС, во втором — про «допустимые в данных системах счисления неизвестные цифры»

Что это значит?

«допустимые в данных системах счисления неизвестные цифры» — это те символы или цифры, которые разрешены для использования при записи чисел в данной системе счисления.

В 10 СС разрешены только такие цифры: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. В 5 СС только такие: 0, 1, 2, 3, 4 и так далее.

Значит, необходимо самостоятельно определить возможные значения переменной (х), учитывая, что оснований два и они различны.

Как выбрать правильное основание для СС?

Внимательно смотрим на первое выражение:

2х84(19) — данное выражение записано в 19 СС

→ значит любая цифра из этого числа не может быть больше 18

2В3х(16) — данное выражение записано в 16 СС

→ значит любая цифра из этого числа не может быть больше 15

Переменная (х) есть и в том и в том выражении. Тогда какой точно алфавит выбрать для (х)?

-36
Подбор подходящего алфавита в соответствии с исходным выражением.
Подбор подходящего алфавита в соответствии с исходным выражением.

Необходимо всегда выбирать алфавит меньшей системы счисления

Что будет если выбрать неправильный алфавит для переменной?

Запишем решение данной задачи. Только диапазон для переменной (х) будет выбран из 19 СС ✖✖✖

Решение задачи на Python. Неправильный выбор диапазона для переменной (х).
Решение задачи на Python. Неправильный выбор диапазона для переменной (х).

Что означает данная ошибка?

  • ValueError — ошибка значения (в переводе с английского) или неправильное значение
  • invalid literal for int() with base 16: '2B3G' — недопустимый литерал для int() с основанием 16: '2B3G'

Строка '2B3G' содержит символ 'G', который не является допустимым символом в 16 СС. В шестнадцатеричной системе можно использовать только цифры от 0 до 9 и буквы от A до F. Поскольку 'G' не входит в этот диапазон, Python не может преобразовать эту строку в целое число.

Именно поэтому необходимо выбирать алфавит для переменной (х) меньшей системы счисления. Только если данная переменная присутствует во всех числах.

Выбор неправильного алфавита для переменной приведет к ошибкам или неправильной работе программы ✅✅✅

Решение задачи на Python. Правильный выбор диапазона для переменной (х).
Решение задачи на Python. Правильный выбор диапазона для переменной (х).

📍3 ПРИМЕР [РАЗНЫЕ СС + ОДНА ПЕРЕМЕННАЯ]

Условие задачи [3 ПРИМЕР РАЗНЫЕ СС + ОДНА ПЕРЕМЕННАЯ]
Условие задачи [3 ПРИМЕР РАЗНЫЕ СС + ОДНА ПЕРЕМЕННАЯ]

[Решение]

-41
Подбор подходящего алфавита для (х) в соответствии с исходными выражениями.
Подбор подходящего алфавита для (х) в соответствии с исходными выражениями.

После тщательного анализа каждого выражения, удалось определить точный алфавит для переменной (х):

  • х = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B (от 0 до В)

Важный момент

В задаче необходимо определить НАИБОЛЬШЕЕ значение х

Для определения наибольшего значения, рекомендуется запустить цикл от большего значения к меньшему ↓

Решение с помощью int() + [::-1] ⤵

Решение задачи [3 ПРИМЕР РАЗНЫЕ СС + ОДНА ПЕРЕМЕННАЯ]
Решение задачи [3 ПРИМЕР РАЗНЫЕ СС + ОДНА ПЕРЕМЕННАЯ]

Для запуска цикла от большего значения (В) к меньшему (0), используем данный оператор:

  • [::-1] оператор, который переворачивает строку

Было: х = '0123456789AB'

Стало: х = 'BA9876543210'

Можно обойтись без данного оператора и просто записать строку в обратном порядке:

  • for x in 'BA9876543210'

Следующий тип заданий включает и различные основания и разные переменные (x, y, z ..). Нужно будет обращать внимание на расположение переменных и на типы оснований в выражениях 🔜

РАЗНЫЕ СИСТЕМЫ СЧИСЛЕНИЯ + НЕСКОЛЬКО ПЕРЕМЕННЫХ

📌 1 ПРИМЕР

Условие задачи [1 ПРИМЕР РАЗНЫЕ СС + НЕСКОЛЬКО ПЕРЕМЕННЫХ]
Условие задачи [1 ПРИМЕР РАЗНЫЕ СС + НЕСКОЛЬКО ПЕРЕМЕННЫХ]

[Решение]

Переменные (х) и (у) присутствуют в обоих числах. Числа имеют разные основания 9 СС и 11 СС.

❶ Определяем значения для переменных (х) и (у)

Внимательно смотрим на расположение переменных. В данной задаче и переменная (x) и переменная (y) присутствуют в обоих числах (88x4y и 7x44y). Это значит, что значения для (х) и (y) должны соответствовать каждому числу и каждому основанию СС ⤵

Подбор подходящего алфавита для (х) и для (у), в соответствии с исходными выражениями.
Подбор подходящего алфавита для (х) и для (у), в соответствии с исходными выражениями.

❷ Запускаем цикл for для переменных (х) и (y)

Провели анализ и выбрали правильный диапазон для переменных (х) и (у). Теперь можно записать цикл for для каждой переменной:

  • for x in '012345678':
  • for y in '012345678':

❸ Создаём числа и переводим их в 10 СС

  • M = int('88' + x + '4' + y, 9)
  • N = int('7' + x + '44' + y, 11)

❹ Записываем условие

Значение выражения (88x4y + 7x44y) должно быть кратно 61. Для проверки на кратность используем оператор (%):

% остаток от деления Python

Условие записываем с помощью оператора (if):

  • if (M + N) % 61 == 0:

❺ Итоговая программа:

Решение [1 ПРИМЕР РАЗНЫЕ СС + НЕСКОЛЬКО ПЕРЕМЕННЫХ].
Решение [1 ПРИМЕР РАЗНЫЕ СС + НЕСКОЛЬКО ПЕРЕМЕННЫХ].

На что обратить внимание:

▪Почему нельзя взять 11 СС и для (х) и для (y)?

Предположим, что вы выбрали следующий алфавит (11 СС): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A(10)

Запустили цикл for для (х) и цикл for для (y) от 0 до А. Cоздаем переменные M и N. Как только программа дойдет до значения 9 для переменной (х), выскочит ошибка! Так как в 9 СС не может быть цифр больше чем 9. Аналогичная ошибка возникнет и для переменной (у).

▪Порядок расположения цикла for для переменных не имеет значения. Вы можете запустить сначала цикл for для переменной (у), а потом для переменной (х). На результат программы это не повлияет 😉

▪Выбираем алфавит для конкретной переменной исходя из оснований всех СС

📌 2 ПРИМЕР [РАЗНЫЕ СС + НЕСКОЛЬКО ПЕРЕМЕННЫХ]

Условие задачи [2 ПРИМЕР РАЗНЫЕ СС + НЕСКОЛЬКО ПЕРЕМЕННЫХ]
Условие задачи [2 ПРИМЕР РАЗНЫЕ СС + НЕСКОЛЬКО ПЕРЕМЕННЫХ]

В первую очередь необходимо выбрать диапазон значений для переменных (х) и (у). Внимательно смотрим на условия и записываем каждое число:

Подбор подходящего алфавита для (х) и для (у), в соответствии с исходными выражениями.
Подбор подходящего алфавита для (х) и для (у), в соответствии с исходными выражениями.

Провели анализ и выбрали правильный диапазон для переменных (х) и (у):

for x in range(1, 58): (от 1 до 57, так как 58 - не включительно)

for y in range(72): (от 0 до 71, так как 72 - не включительно)

Переводим каждое число в 10 СС с помощью возведения в степень. Добавляем переменную (ans) для суммирования (х + у). Внимательно записываем условие (if) больше 0 и кратность 363.

Код программы:

Решение [1 ПРИМЕР РАЗНЫЕ СС + НЕСКОЛЬКО ПЕРЕМЕННЫХ].
Решение [1 ПРИМЕР РАЗНЫЕ СС + НЕСКОЛЬКО ПЕРЕМЕННЫХ].

Рассмотрим примеры, когда основание СС не известно. Необходимо проанализировать каждое выражение и определить диапазон чисел для всех оснований 🔜

НЕИЗВЕСТНОЕ ОСНОВАНИЕ

Условие задачи [1 ПРИМЕР НЕИЗВЕСТНОЕ ОСНОВАНИЕ]
Условие задачи [1 ПРИМЕР НЕИЗВЕСТНОЕ ОСНОВАНИЕ]

[РЕШЕНИЕ]

Основная трудность данной задачи неизвестное основание для всех выражений. В предыдущих заданиях основание каждого из выражений было известно. Именно по значениям всех оснований и удавалось определить алфавит для каждой переменной.

Как действовать теперь?

Попробуем определить диапазон значений для основания (р). В этом случае, будем ориентироваться на символы в каждом выражении (y2y, y57 и xzz3).

  • Определяем значения для основания (p) и переменных (х, у, z)
Подбор подходящего алфавита для (х, y, z) и определение диапазона для основания (р).
Подбор подходящего алфавита для (х, y, z) и определение диапазона для основания (р).

Для понимания принципов отбора и правильного рассуждения, обратимся к нашему "золотому правилу":

Алфавит системы счисления всегда должен быть меньше основания.

Тогда, верно и обратное утверждение:

Основание системы счисления всегда должно быть больше алфавита.

Анализируем каждое из представленных чисел (y2y, y57, xzz3). Каждое из этих чисел записано в системе счисления с основанием (р). Это важно.

Значит, все цифры из каждого числа (2, 3, 5, 7) должны быть меньше предполагаемого основания (р). Смотрим на максимальную цифру из этого списка: 2, 3, 5, 7. Максимальная цифра это — (7). Теперь вновь обратимся к "золотому правилу":

Основание системы счисления всегда должно быть больше алфавита

На данном этапе Алфавит = 2, 3, 5, 7

→ Значит, необходимо взять систему счисления больше 7, это 8. Итак, диапазон значений для основания (р) будет начинаться с 8!

Почему именно 8 СС?

❌ Число y57 не может существовать в системах счисления от 2 до 7

-52

Каждое число будет записано с учетом текущей системы счисления. Если р = 8, то переменные x, y, z тоже будут в 8 СС. Когда p = 9, то переменные x, y, z тоже будут в 9 СС и так далее. Тем самым удается следовать условию, что буквами x, y, z обозначены цифры из алфавита с основанием p.

  • Запускаем циклы for

В первую очередь записываем цикл for для (p) → for p in range(8, 100) → только потом записываем циклы for для переменных (x, y, z) так как именно значение (p) задает диапазон значений для (x, y, z)

  • Код программы:
Решение задачи [1 ПРИМЕР НЕИЗВЕСТНОЕ ОСНОВАНИЕ]
Решение задачи [1 ПРИМЕР НЕИЗВЕСТНОЕ ОСНОВАНИЕ]
Значение р (основание) задает диапазон значений для всех переменных x, y, z.

На что обратить внимание:

▪Второе значение в цикле for для переменной p подбирается интуитивно. Если программа написано верно, ошибок нет, то значение нужно увеличивать

for p in range(8, 100) for p in range(8, 1000) for p in range(8, 10000)

▪Порядок расположения циклов for для переменных (x, y, z) не имеет значения

▪Для перевода в 10 СС лучше не использовать встроенный метод (int). Вдруг, значение для (р) окажется больше 36. Поэтому, переводим в 10 СС с помощью возведения в степень.

▪В качестве ответа число (xyz) нужно перевести в 10 СС

-54

Что если взять другой range() для переменной p? Текущий диапазон от 8 до 100. Данный диапазон учитывает алфавит каждого выражения и является правильным для данной задачи.

Попробуем запустить программу с диапазоном от 0 до 100 ⤵

Код программы для решения задания с другим диапазоном для (р).
Код программы для решения задания с другим диапазоном для (р).

На выходе получилось два ответа 8 и 456. Число 456 было получено в предыдущем варианте решения. Тогда откуда взялось число 8?

Может быть первое решение ошибочное и ответ в данной задаче это число 8?

Попробуем посмотреть значение р для каждого ответа. Для этого в функцию print() добавим р:

Код программы для решения задания с другим диапазоном для (р).
Код программы для решения задания с другим диапазоном для (р).

На выходе получилось число 8, при р = 5 →

IT IS IMPOSSIBLE

Число y57 НЕ МОЖЕТ существовать в 5 СС. Почему?

Золотое правило 😉:

Алфавит системы счисления всегда должен быть меньше основания.

👏 Отличная работа! Вы успешно справились с большим объемом задач по системам счисления. Продолжайте в том же духе! Эта статья обязательно будет обновляться новыми примерами и различными типами заданий!

Удачи!

🔜Материалы для успешной подготовки к ЕГЭ:

Всё, что нужно знать о типах данных в Python
МОЙ РЕПЕТИТОР2 февраля 2025