Операнды арифметического выражения записаны в системе счисления с основанием 21.
635x4521 + 532x321 + 975x1676821
В записи чисел переменной x обозначена неизвестная цифра из алфавита 21-ричной системы счисления. Определите наименьшее значение x, при котором значение данного арифметического выражения кратно 20. Для найденного значения x вычислите частное от деления значения арифметического выражения на 20 и укажите его в ответе в десятичной системе счисления. Основание системы счисления указывать не нужно.
Приведём решение данной задачи на языке Python.
s = sorted('0123456789qwertyuiopasdfghjklzxcvbnm')
for x in s[:22]:
x1 = '635' + str(x) + '45'
x2 = '532' + str(x) + '3'
x3 = '975' + str(x) + '16768'
res = int(x1, 21) + int(x2, 21) + int(x3, 21)
if res % 20 == 0:
res = res // 20
print(res)
break
Ответ: 17674449812.
Приведём решение Сергея Донец на языке PascalABC.NET.
function ToNm(digs: array of integer; base: integer): int64;
begin
Result := 0;
foreach var d in digs do
Result := Result * base + d;
end;
begin
var ass:=(('0'..'9')+('A'..'Z')).toArray;
var p := 21;
var s1 := '635x45';
var s2 := '532x3';
var s3 := '975x16768';
var d := 20;
for var x := 0 to p-1 do begin
var n1 := s1.Select(ch -> ch = 'x' ? x : ass.IndexOf(ch)).ToArray;
var n2 := s2.Select(ch -> ch = 'x' ? x : ass.IndexOf(ch)).ToArray;
var n3 := s3.Select(ch -> ch = 'x' ? x : ass.IndexOf(ch)).ToArray;
var num := ToNm(n1, p) + ToNm(n2, p) + ToNm(n3, p);
if num mod d = 0 then
begin
(num div d).Print;
end;
end;
end.

