Решить ребус (4 * Зерно = Колос) - Free Pascal

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

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

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

Решение задачи: «Решить ребус (4 * Зерно = Колос)»

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

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

В этом коде используется рекурсивный спуск для поиска всех возможных комбинаций чисел от 1 до 9 и их разрядов (десяток, сотен, тысяч и т.д.), которые могут быть использованы для представления числа, полученного умножением числа зерна (представленного числа колоса) на 4. Затем проверяется, является ли полученное число максимальным среди всех найденных комбинаций. Если да, то запоминаются значения цифр, при которых получается это число, и выводится сообщение с этими значениями.

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


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

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

11   голосов , оценка 3.818 из 5

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

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

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