Ребус: Реши + Если = Силен - Free Pascal
Формулировка задачи:
Расшифровать ребус, полученный в результате замены одинаковых букв
одинаковыми цифрами. Найти также такие значения цифр, при которых сумма цифр в
результате окажется наибольшей.
РЕШИ
+ ЕСЛИ
__________
СИЛЕН
Решение задачи: «Ребус: Реши + Если = Силен»
textual
Листинг программы
var
r, e, sh, i, s, l, o, n: integer;
max, maxs, maxi, maxl, maxo, maxn: integer;
m: set of byte;
begin
m := [];
for r := 1 to 9 do
if not (r in m) then
begin
Include(m, r);
for e := 1 to 9 do
if not (e in m) then
begin
Include(m, e);
for sh := 0 to 9 do
if not (sh in m) then
begin
Include(m, sh);
for i := 0 to 9 do
if not (i in m) then
begin
Include(m, i);
for s := 1 to 9 do
if not (s in m) then
begin
Include(m, s);
for l := 0 to 9 do
if not (l in m) then
begin
Include(m, l);
for o := 0 to 9 do
if not (o in m) then
begin
Include(m, o);
for n := 0 to 9 do
if not (n in m) then
begin
Include(m, n);
if r * 1000 + e * 100 + sh * 10 + i + e * 1000 + s * 100 + l * 10 + i = s * 10000 + i * 1000 + l * 100 + o * 10 + n then
begin
if s + i + l + o + n > max then
begin
max := s + i + l + o + n;
maxs := s; maxi := i; maxl := l; maxo := o; maxn := n
end;
WriteLn(r, e, sh, i, ' + ', e, s, l, i, ' = ', s, i, l, o, n)
end;
Exclude(m, n)
end;
Exclude(m, o)
end;
Exclude(m, l)
end;
Exclude(m, s)
end;
Exclude(m, i)
end;
Exclude(m, sh)
end;
Exclude(m, e)
end;
Exclude(m, r)
end;
WriteLn('Значения цифр, при которых сумма цифр в результате наибольшая:');
WriteLn('С = ', maxs, '; И = ', maxi, '; Л = ', maxl, '; Ё = ', maxo, '; Н = ', maxn);
ReadLn
end.
Объяснение кода листинга программы
- Переменные
r,e,sh,i,s,l,o,nинициализируются значениями от 1 до 9. - Переменные
max,maxs,maxi,maxl,maxo,maxnинициализируются нулевыми значениями. - Создается пустое множество
m. - В цикле от 1 до 9 выполняется следующая последовательность действий:
- Если число
rне содержится в множествеm, то оно включается вm. - В цикле от 1 до 9 выполняется следующая последовательность действий:
- Если число
eне содержится в множествеm, то оно включается вm. - В цикле от 0 до 9 выполняется следующая последовательность действий:
- Если число
shне содержится в множествеm, то оно включается вm. - В цикле от 0 до 9 выполняется следующая последовательность действий:
- Если число
iне содержится в множествеm, то оно включается вm. - В цикле от 1 до 9 выполняется следующая последовательность действий:
- Если число
sне содержится в множествеm, то оно включается вm. - В цикле от 0 до 9 выполняется следующая последовательность действий:
- Если число
lне содержится в множествеm, то оно включается вm. - В цикле от 0 до 9 выполняется следующая последовательность действий:
- Если число
oне содержится в множествеm, то оно включается вm. - В цикле от 0 до 9 выполняется следующая последовательность действий:
- Если число
nне содержится в множествеm, то оно включается вm. - Проверяется условие: сумма чисел
r,e,sh,i,s,l,o,nравна сумме чиселs,i,l,o,n. - Если условие выполняется, то значения переменных
maxs,maxi,maxl,maxo,maxnобновляются. - Строка с числами
r,e,sh,i,s,l,o,nвыводится на экран. - Число
nисключается из множестваm. - Цикл по числам
oзавершается. - Число
lисключается из множестваm. - Цикл по числам
sзавершается. - Число
iисключается из множестваm. - Цикл по числам
shзавершается. - Число
eисключается из множестваm. - Цикл по числам
rзавершается.
- Если число
- Если число
- Если число
- Если число
- Если число
- Выводится сообщение
Значения цифр, при которых сумма цифр в результате наибольшая:и значения переменныхmaxs,maxi,maxl,maxo,maxn. - Программа ожидает ввода данных с помощью функции
ReadLn.