Решить ребус (7 * Дни = Годы) - Free Pascal

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

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

Помогите решить задачу-ребус. Условие: ДНИ + ДНИ + ДНИ + ДНИ + ДНИ + ДНИ + ДНИ = ГОДЫ

Решение задачи: «Решить ребус (7 * Дни = Годы)»

textual
Листинг программы
var
  d, n, i, g, o, s: integer;
  m: set of byte;
 
begin
  m := [];
  for d := 1 to 9 do
    if not (d in m) then
    begin
      Include(m, d);
      for n := 0 to 9 do
        if not (n in m) then
        begin
          Include(m, n);
          for i := 0 to 9 do
            if not (i in m) then
            begin
              Include(m, i);
              for g := 1 to 9 do
                if not (g in m) then
                begin
                  Include(m, g);
                  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);
                          if 7 * (d * 100 + n * 10 + i) = g * 1000 + o * 100 + d * 10 + s then
                            WriteLn('7 * ', d, n, i, ' = ', g, o, d, s);
                          Exclude(m, s)
                        end;
                      Exclude(m, o)
                    end;
                  Exclude(m, g)
                end;
              Exclude(m, i)
            end;
          Exclude(m, n)
        end;
      Exclude(m, d)
    end;
  ReadLn
end.

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

  1. Создается пустое множество m для хранения чисел от 0 до 9.
  2. Запускается цикл for для чисел d от 1 до 9.
  3. Проверяется, есть ли текущее число d уже в множестве m. Если нет, то оно добавляется.
  4. Запускается второй цикл for для чисел n от 0 до 9.
  5. Проверяется, есть ли текущее число n уже в множестве m. Если нет, то оно добавляется.
  6. Запускается третий цикл for для чисел i от 0 до 9.
  7. Проверяется, есть ли текущее число i уже в множестве m. Если нет, то оно добавляется.
  8. Запускается четвертый цикл for для чисел g от 1 до 9.
  9. Проверяется, есть ли текущее число g уже в множестве m. Если нет, то оно добавляется.
  10. Запускается пятый цикл for для чисел o от 0 до 9.
  11. Проверяется, есть ли текущее число o уже в множестве m. Если нет, то оно добавляется.
  12. Запускается шестой цикл for для чисел s от 0 до 9.
  13. Проверяется, есть ли текущее число s уже в множестве m. Если нет, то оно добавляется.
  14. Проверяется условие равенства 7 (d 100 + n 10 + i) = g 1000 + o 100 + d 10 + s.
  15. Если условие выполняется, то выводится сообщение '7 * ', d, n, i, ' = ', g, o, d, s.
  16. Число s удаляется из множества m.
  17. Число o удаляется из множества m.
  18. Число g удаляется из множества m.
  19. Число i удаляется из множества m.
  20. Число n удаляется из множества m.
  21. Число d удаляется из множества m.
  22. Запускается цикл ReadLn для чтения следующего ввода.

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


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

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

8   голосов , оценка 4.25 из 5
Похожие ответы