Тип 14 № 48392 
Кодирование чисел. Системы счисления. Операции в разных СС с двумя переменными
i
Операнды арифметического выражения записаны в системах счисления с основаниями 9 и 12:
2y66x9 + x0y112.
В записи чисел переменными x и y обозначены допустимые в данных системах счисления неизвестные цифры. Определите значения x и y, при которых значение данного арифметического выражения будет наименьшим и кратно 170. Для найденных значений x и y вычислите частное от деления значения арифметического выражения на 170 и укажите его в ответе в десятичной системе счисления. Основание системы счисления в ответе указывать не нужно.
Решение. При помощи цикла for будем перебирать x и y в соответствии в заданными системами счислений. Затем переведём все числа в десятичную систему счисления и найдём их сумму, записав полученное значение в переменную. Проверим кратность переменной на 170 и выведем частное от деления значения арифметического выражения.
Приведём решение на языке Python.
result_search = []
for x in '12345678':
for y in '012345678':
t = int('2' + y + '66' + x, 9) + int('' + x + '0' + y + '1', 12)
if t % 170 == 0:
result_search.append(t)
if result_search:
print(min(result_search) // 170)
Ответ: 169.
Приведём решение Константина Мякотникова на языке Python.
for x in '12345678':
for y in '012345678':
t = int('2' + y + '66' + x, 9) + int(x + '0' + y + '1', 12)
if t%170 == 0:
print(t//170)
Приведём решение Ильи Андрианова на языке Python.
alphabet = sorted('1234567890QWERTYUIOPASDFGHJKLZXCVBNM')
for x in alphabet[:9]:
for y in alphabet[:9]:
A = int(f'2{y}66{x}', 9)
B = int(f'{x}0{y}1', 12)
if (A + B) % 170 == 0:
print((A + B) // 170)
Приведём решение Юрия Красильникова на языке Python.
d='012345678'
a=[int(f'2{y}66{x}',9)+int(f'{x}0{y}1',12) for x in d for y in d]
print(min([x for x in a if x%170==0])//170)
Приведём решение Сергея Донец на PascalABC:
begin
var (minS, bestX, bestY) := (MaxInt, 0, 0);
for var x := 0 to 8 do
for var y := 0 to 8 do
begin
var num9 := 2*9*9*9*9 + y*9*9*9 + 6*9*9 + 6*9 + x;
var num12 := x*12*12*12 + y*12 + 1;
var S := num9 + num12;//2y66x + x0y1
if (S mod 170 = 0) and (S < minS) then
(minS, bestX, bestY) := (S, x, y);
end;
Println(minS div 170);
end.
Ответ: 169