Ребус: Реши + Если = Силен - 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д