№14

Примеры решений прототипа №2

Позиционные системы счисления

Примеры решения:

 

№ 11303 (Уровень: Базовый)

(М. Ишимов) Операнды арифметического выражения записаны в системе счисления с основанием 20.

\(627xJ8_{20} + H45Ix5HIJ_{20} + 4IDB49Jx7_{20}\)

В записи чисел переменной x обозначена неизвестная цифра из алфавита 20-ричной системы счисления. Определите наибольшее значение x, при котором значение данного арифметического выражения кратно 19. Для найденного x вычислите частное от деления значения арифметического выражения на 19 и укажите его в ответе в десятичной системе счисления. Основание системы счисления указывать не нужно. 

from string import printable
for x in printable[:20]:
    n = int(f'627{x}J8', 20) + int(f'H45I{x}5HIJ', 20) + int(f'4IDB49J{x}7',20)
    if n % 19 == 0: print(x, n // 19)

 

№ 7346 (Уровень: Средний)

(Д. Статный) Дано арифметическое выражение:

\(3x21_{81} + 17x4_{67}\)

В записи чисел переменной x обозначена неизвестная цифра из допустимого алфавита для указанных систем счисления. Определите наибольшее значение x, при котором значение данного арифметического выражения кратно 35. Для найденного значения x вычислите частное от деления значения арифметического выражения на 35 и укажите его в ответе в десятичной системе счисления.

Варианты кода:

for x in range(66, 0, - 1):
    n = 3 * 81 ** 3 + x * 81 ** 2 + 2 * 81 + 1 + 1 * 67 ** 3 + 7 * 67 ** 2 + x * 67 + 4
    if n % 35 == 0:
        print(n // 35)
        break
def f(x:list, base):
    r = 0
    for p, el in enumerate(x[::-1]):
        r += el * base ** p
    return r

for x in range(66, 0, - 1):
    n = f([3, x, 2, 1], 81) + f([1, 7, x, 4], 67)
    if n % 35 == 0:
        print(n // 35)
        break
def f(x, base):
    return sum(el * base ** p for p, el in enumerate(reversed(x)))


for x in range(66, 0, - 1):
    n = f([3, x, 2, 1], 81) + f([1, 7, x, 4], 67)
    if n % 35 == 0:
        print(n // 35)
        break

← К списку шпаргалок