Расшифровать ребус (4 * Дуб = Роща) - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Расшифровать ребус, полученный в результате замены одинаковых букв одинаковыми цифрами. Найти также такие значения цифр, при которых сумма цифр в результате окажется наибольшей. дуб+дуб+дуб+дуб=роща

Решение задачи: «Расшифровать ребус (4 * Дуб = Роща)»

textual
Листинг программы
  1. var
  2.   d, u, b, r, o, s, a: integer;
  3.   max, maxr, maxo, maxs, maxa: integer;
  4.   m: set of byte;
  5.  
  6. begin
  7.   m := [];
  8.   for d := 1 to 9 do
  9.     if not (d in m) then
  10.     begin
  11.       Include(m, d);
  12.       for u := 0 to 9 do
  13.         if not (u in m) then
  14.         begin
  15.           Include(m, u);
  16.           for b := 0 to 9 do
  17.             if not (b in m) then
  18.             begin
  19.               Include(m, b);
  20.               for r := 1 to 9 do
  21.                 if not (r in m) then
  22.                 begin
  23.                   Include(m, r);
  24.                   for o := 0 to 9 do
  25.                     if not (o in m) then
  26.                     begin
  27.                       Include(m, o);
  28.                       for s := 0 to 9 do
  29.                         if not (s in m) then
  30.                         begin
  31.                           Include(m, s);
  32.                           for a := 0 to 9 do
  33.                             if not (a in m) then
  34.                             begin
  35.                               Include(m, a);
  36.                               if 4 * (d * 100 + u * 10 + b) = r * 1000 + o * 100 + s * 10 + a then
  37.                               begin
  38.                                 if r + o + s + a > max then
  39.                                 begin
  40.                                   max := r + o + s + a;
  41.                                   maxr := r; maxo := o;
  42.                                   maxs := s; maxa := a
  43.                                 end;
  44.                                 WriteLn('4 * ', d, u, b, ' = ', r, o, s, a)
  45.                               end;
  46.                               Exclude(m, a)
  47.                             end;
  48.                           Exclude(m, s)
  49.                         end;
  50.                       Exclude(m, o)
  51.                     end;
  52.                   Exclude(m, r)
  53.                 end;
  54.               Exclude(m, b)
  55.             end;
  56.           Exclude(m, u)
  57.         end;
  58.       Exclude(m, d)
  59.     end;
  60.   WriteLn('Значения цифр, при которых сумма цифр в результате наибольшая:');
  61.   WriteLn('Р = ', maxr, '; О = ', maxo, '; Щ = ', maxs, '; А = ', maxa);
  62.   ReadLn
  63. end.

Объяснение кода листинга программы

  1. Создается пустое множество m для хранения уже использованных чисел.
  2. Происходит итерация по числам от 1 до 9.
  3. Для каждого числа d проверяется, было ли оно уже использовано (есть ли оно в множестве m).
  4. Если число d не было использовано, то оно включается в множество m.
  5. Далее, для каждого числа d происходит поиск подходящих чисел u, b, r, o, s и a (такие, чтобы удовлетворять условию ребуса).
  6. Если подходящие числа найдены, то проверяется, является ли сумма этих чисел наибольшей среди всех найденных до этого комбинаций.
  7. Если да, то значения maxr, maxo, maxs и maxa обновляются.
  8. После проверки всех чисел от 1 до 9, выводится сообщение с наибольшими значениями maxr, maxo, maxs и maxa.
  9. Программа ожидает ввода пользователя для продолжения работы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.5 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут