№ 10707 (Уровень: Средний)
(PRO100 ЕГЭ) На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
Строится шестеричная запись числа N.
Далее эта запись обрабатывается по следующему правилу:
а) если число N делится на 3, то к этой записи дописываются две первые шестеричные цифры;
б) если число N на 3 не делится, то остаток от деления на 3 умножается на 10, переводится в шестеричную запись и дописывается в конец числа.
Полученная таким образом запись является шестеричной записью искомого числа R.
Например, для исходного числа 11_10 результатом является число 416_10, а для исходного числа 12_10 это число 444_10.
Укажите минимальное число R, большее 680, которое может быть получено с помощью описанного алгоритма. В ответе запишите это число в десятичной системе счисления.
Комментарии к решению:
alphabet = sorted('0123456789QWERTYUIOPASDFGHJKLZXCVBNM')
- Создание списка alphabet
, содержащего отсортированные символы '0123456789QWERTYUIOPASDFGHJKLZXCVBNM'
, то есть 36-ный алфавит и все меньшие алфавиты.def my_convert(x, n):
- Объявление функции my_convert
с двумя аргументами x
и n
, где х
переводимое число, а n
- система счисления.s = ''
- Инициализация пустой строки s
, куда будем складывать остатки от деления.while x > 0:
- Цикл while
, который выполняется, пока x
не станет нулем (мы же его делим).s += alphabet[x % n]
- Добавление символа из списка alphabet
, соответствующего остатку от деления x
на n
, в строку s
, такой способ помогает нам складывать буквы вместо двузначных числе, например 10
== А
.