Решить ребус (7 * Дни = Годы) - Free Pascal
Формулировка задачи:
Помогите решить задачу-ребус.
Условие:
ДНИ
+
ДНИ
+
ДНИ
+
ДНИ
+
ДНИ
+
ДНИ
+
ДНИ
=
ГОДЫ
Решение задачи: «Решить ребус (7 * Дни = Годы)»
textual
Листинг программы
var
d, n, i, g, o, s: integer;
m: set of byte;
begin
m := [];
for d := 1 to 9 do
if not (d in m) then
begin
Include(m, d);
for n := 0 to 9 do
if not (n in m) then
begin
Include(m, n);
for i := 0 to 9 do
if not (i in m) then
begin
Include(m, i);
for g := 1 to 9 do
if not (g in m) then
begin
Include(m, g);
for o := 0 to 9 do
if not (o in m) then
begin
Include(m, o);
for s := 0 to 9 do
if not (s in m) then
begin
Include(m, s);
if 7 * (d * 100 + n * 10 + i) = g * 1000 + o * 100 + d * 10 + s then
WriteLn('7 * ', d, n, i, ' = ', g, o, d, s);
Exclude(m, s)
end;
Exclude(m, o)
end;
Exclude(m, g)
end;
Exclude(m, i)
end;
Exclude(m, n)
end;
Exclude(m, d)
end;
ReadLn
end.
Объяснение кода листинга программы
- Создается пустое множество
mдля хранения чисел от 0 до 9. - Запускается цикл
forдля чиселdот 1 до 9. - Проверяется, есть ли текущее число
dуже в множествеm. Если нет, то оно добавляется. - Запускается второй цикл
forдля чиселnот 0 до 9. - Проверяется, есть ли текущее число
nуже в множествеm. Если нет, то оно добавляется. - Запускается третий цикл
forдля чиселiот 0 до 9. - Проверяется, есть ли текущее число
iуже в множествеm. Если нет, то оно добавляется. - Запускается четвертый цикл
forдля чиселgот 1 до 9. - Проверяется, есть ли текущее число
gуже в множествеm. Если нет, то оно добавляется. - Запускается пятый цикл
forдля чиселoот 0 до 9. - Проверяется, есть ли текущее число
oуже в множествеm. Если нет, то оно добавляется. - Запускается шестой цикл
forдля чиселsот 0 до 9. - Проверяется, есть ли текущее число
sуже в множествеm. Если нет, то оно добавляется. - Проверяется условие равенства 7 (d 100 + n 10 + i) = g 1000 + o 100 + d 10 + s.
- Если условие выполняется, то выводится сообщение '7 * ', d, n, i, ' = ', g, o, d, s.
- Число
sудаляется из множестваm. - Число
oудаляется из множестваm. - Число
gудаляется из множестваm. - Число
iудаляется из множестваm. - Число
nудаляется из множестваm. - Число
dудаляется из множестваm. - Запускается цикл
ReadLnдля чтения следующего ввода.