Я подумал и придумал. Вот что я придумал: Надо просмотреть все варианты знаков "+" и "-" между числами, которые возможно составить из цифр от 1 до 9. Т.е. тут развивается две задачи:
1. найти такие числа, удовлетворяющие условиям задачи (не должны повторятся цифры)
2. расставить между ними все варианты знаков. Как видно первая задача очень непростая (покрайней мере для меня) и в своем пробном варианте решения я решил заменить этот блок на четыре константы (a, b, c, d). А роль знаков выполняют коэффициенты. Вот. Сама идея вложенных циклов вспомнилась мне из задачи о размене монет (так и не понял почему).
Надо еще подумать. Извините, модераторы тоже студенты и у них полно дел. Особенно сейчас. Учеба... Думаю, если вырвется еще свободных часа два, решу полностью. А проверка моей теории заняла около 10 минут.
Code
program sotka;
uses crt;
const
a = 123;
b = 45;
c = 67;
d = 89;
var
kb, kc, kd: shortint;
i, j, k, z: byte;
r: integer;
begin
clrscr;
kb := 1;
kc := 1;
kd := 1;
r := a;
for i := 1 to 2 do
begin
r := a;
kb := - kb;
for j := 1 to 2 do
begin
kc := - kc;
for k := 1 to 2 do
begin
r := r + kb*b + kc*c + kd*d;
if r = 100 then
begin
writeln('Ok');
writeln(a, '+', kb*b, '+', kc*c, '+', kd*d, ' = 100');
Readkey;
Exit;
end;
kd := - kd;
end;
end;
end;
readkey;
end.