Чтобы понять алгоритм, немного переделаем программу.
a:=0; b:=1;
while x>0 do begin
d:=x mod 6;
if x mod 2>0 then a:=a+d { х - нечетное }
else b:=b+d; {х - четное }
x:=x div 6
end;
Writeln(a,' ',b)
Обратим внимание на условие выполнения цикла.
while x>0 do begin
d:=x mod 6;
{ тут что-то делаем }
x:=x div 6
end;
Число х последовательно делится нацело на 6 до тех пор, пока оно не превратится в ноль. И на каждом шаге находится остаток от такого деления. Мысленно заменим 6 на 10. Узнаёте алгоритм? Это получение десятичных цифр d, начиная с младшего разряда. А если у нас не 10, а 6 - то получение цифр числа по основанию 6. Другими словами, тут происходит перевод числа в шестеричную систему счисления.
А что же делается с полученными шестеричными цифрами?
if x mod 2>0 then a:=a+d { х - нечетное }
else b:=b+d; {х - четное }
В переменной a накапливается сумма нечетных шестеричных цифр, в переменной b - сумма четных цифр.
По условию a=2, 2 - число четное и единственный способ получить его в виде суммы нечетных чисел - это 2 = 1+1.
Теперь мы знаем, что шестеричное представление искомого числа содержит две нечетные цифры и обе они равны 1.
По условию b=9, но начальное значение b=1, поэтому сумма четных шестеричных цифр равна 9-1, т.е. 8.
Четные шестеричные цифры - это 0, 2 и 4. Поскольку поставлена задача найти минимальное число, оно должно содержать минимальное количество разрядов. 8 = 4+4 - это еще две шестеричный цифры искомого числа. Теперь мы можем его записать: 1144₆
Осталось перевести его в десятичную систему: 1144₆=1×6³+1×6²+4×6¹+4×6⁰ = 216+36+24+4 = 280
Ответ: 280