Задачу лучше решать с конца – то есть получать число 1 из числа 434 с командотними 2 отними 3 раздели на 10Первые две команды должны быть командами вычитания 2 (команда №1), после их выполнения мы получим 430. В противном случае после выполнения двух первых команд мы получим 429 или 428 и после выполнения 6 команд наименьшее число, которое можно будет получить – это число 42. Третьей командой (по аналогичным соображениям) должна быть команда №3 «раздели на 10». После ее выполнения получим 43. Далее, рассуждая аналогично, находим три остальные команды. Это будут, соответственно, команда №2 (получим 40), команда №3 (получим 4), команда №2 (получим 1). Таким образом, в новой системе команд программа получения числа 1 из числа 434 – это программа 113232. Значит, искомая программа получения числа 434 из числа 1 в исходной системе – это «обратная программа» - программа 232311.
"...напечатает сначала 2, потом - 6" -- это значит a=2 и b=6?
про пятеричные записи ничего не понял... :) И ИМХО к чему такие сложности? И для чего нам комп и программа? Я подправил исходную прогу чтобы она выдавала все числа подходящие по условию
var x,a,b: longint;
begin
for var i := 999 DownTo 100 do begin
a := 0;
b := 1;
x := i;
while x>0 do begin
if x mod 2 > 0 then a := a+1 else b := b+(x mod 5);
x := x div 5;
end;
if (a = 2) and (b = 6) then writeln('x = ', i, ' a = ', a, ' b = ',b);
end;
end.
прога проводит расчет для всх трехзначных чисел от 999 до 100
итого мы видим что максимальное подходящее число это 960
при необходимости прогу можно переделать чтобы она находила только максимальное число.
отними 3
раздели на 10Первые две команды должны быть командами вычитания 2 (команда №1), после их выполнения мы получим 430. В противном случае после выполнения двух первых команд мы получим 429 или 428 и после выполнения 6 команд наименьшее число, которое можно будет получить – это число 42. Третьей командой (по аналогичным соображениям) должна быть команда №3 «раздели на 10». После ее выполнения получим 43. Далее, рассуждая аналогично, находим три остальные команды. Это будут, соответственно, команда №2 (получим 40), команда №3 (получим 4), команда №2 (получим 1). Таким образом, в новой системе команд программа получения числа 1 из числа 434 – это программа 113232. Значит, искомая программа получения числа 434 из числа 1 в исходной системе – это «обратная программа» - программа 232311.
"...напечатает сначала 2, потом - 6" -- это значит a=2 и b=6?
про пятеричные записи ничего не понял... :) И ИМХО к чему такие сложности? И для чего нам комп и программа? Я подправил исходную прогу чтобы она выдавала все числа подходящие по условию
var x,a,b: longint;
begin
for var i := 999 DownTo 100 do begin
a := 0;
b := 1;
x := i;
while x>0 do begin
if x mod 2 > 0 then a := a+1 else b := b+(x mod 5);
x := x div 5;
end;
if (a = 2) and (b = 6) then writeln('x = ', i, ' a = ', a, ' b = ',b);
end;
end.
прога проводит расчет для всх трехзначных чисел от 999 до 100
итого мы видим что максимальное подходящее число это 960
при необходимости прогу можно переделать чтобы она находила только максимальное число.