Задача №14 (6010) (И. Карпачев)

Дано арифметическое выражение:
57Ax9(16) · 54x(8)
В записи чисел переменной x обозначена неизвестная цифра. При каком наибольшем значении переменной х, сумма цифр значения этого выражения, записанного в 12-ричной системе счисления, равна 40? В ответе для найденного значения x укажите значение выражения в десятичной системе счисления. Основание системы счисления в ответе указывать не нужно.

Решение:
## uses school;
for var x:=0 to 7 do
begin
 var a:=5*16bi**4 + 7*16bi**3+10*16bi**2+x*16+9;
 var b:=5*8bi**2+4*8+x;
 var q:=a*b;
 var s:=ToBase(q,12);
 //println(s);
 {1 способ подсчета суммы}
 var sum:=0bi;
 while q<>0 do
 begin
  sum+=q mod 12;
  q:=q div 12;
 end;
 if sum = 40 then
   println(x,a*b);
 {2 способ подсчета суммы}
 if s.Where(x->x.IsDigit).Select(y->y.ToDigit).Sum +
   s.CountOf('A')*10+s.CountOf('B')*11 = 40 then
 println(x,a*b);
end;