Расшифровать ребус (4 * Дуб = Роща) - Free Pascal
Формулировка задачи:
Расшифровать ребус, полученный в результате замены одинаковых букв одинаковыми цифрами. Найти также такие значения цифр, при которых сумма цифр в результате окажется наибольшей.
дуб+дуб+дуб+дуб=роща
Решение задачи: «Расшифровать ребус (4 * Дуб = Роща)»
textual
Листинг программы
- var
- d, u, b, r, o, s, a: integer;
- max, maxr, maxo, maxs, maxa: integer;
- m: set of byte;
- begin
- m := [];
- for d := 1 to 9 do
- if not (d in m) then
- begin
- Include(m, d);
- for u := 0 to 9 do
- if not (u in m) then
- begin
- Include(m, u);
- for b := 0 to 9 do
- if not (b in m) then
- begin
- Include(m, b);
- for r := 1 to 9 do
- if not (r in m) then
- begin
- Include(m, r);
- 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);
- for a := 0 to 9 do
- if not (a in m) then
- begin
- Include(m, a);
- if 4 * (d * 100 + u * 10 + b) = r * 1000 + o * 100 + s * 10 + a then
- begin
- if r + o + s + a > max then
- begin
- max := r + o + s + a;
- maxr := r; maxo := o;
- maxs := s; maxa := a
- end;
- WriteLn('4 * ', d, u, b, ' = ', r, o, s, a)
- end;
- Exclude(m, a)
- end;
- Exclude(m, s)
- end;
- Exclude(m, o)
- end;
- Exclude(m, r)
- end;
- Exclude(m, b)
- end;
- Exclude(m, u)
- end;
- Exclude(m, d)
- end;
- WriteLn('Значения цифр, при которых сумма цифр в результате наибольшая:');
- WriteLn('Р = ', maxr, '; О = ', maxo, '; Щ = ', maxs, '; А = ', maxa);
- ReadLn
- end.
Объяснение кода листинга программы
- Создается пустое множество
m
для хранения уже использованных чисел. - Происходит итерация по числам от 1 до 9.
- Для каждого числа
d
проверяется, было ли оно уже использовано (есть ли оно в множествеm
). - Если число
d
не было использовано, то оно включается в множествоm
. - Далее, для каждого числа
d
происходит поиск подходящих чиселu
,b
,r
,o
,s
иa
(такие, чтобы удовлетворять условию ребуса). - Если подходящие числа найдены, то проверяется, является ли сумма этих чисел наибольшей среди всех найденных до этого комбинаций.
- Если да, то значения
maxr
,maxo
,maxs
иmaxa
обновляются. - После проверки всех чисел от 1 до 9, выводится сообщение с наибольшими значениями
maxr
,maxo
,maxs
иmaxa
. - Программа ожидает ввода пользователя для продолжения работы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д