Решение ребуса: "4 * Дома = Район" - Free Pascal

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

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

Помогите пожалуйста с решением ребуса. ДОМА +ДОМА +ДОМА +ДОМА _______ РАЙОН В интернете нашла но код не тот.нужно написать ,как пример со(шлак*3=блок)
Листинг программы
  1. PROGRAM _1;
  2. CONST D=10;
  3. TYPE CIPFER=0..9;
  4. VAR A,P2,P4,PR,O,L,L1,S,FLAG: CIPFER;
  5. K,P1,P3,B,SLAK,BLOK: INTEGER;
  6. BEGIN
  7. K:=0; FLAG:=0;
  8. REPEAT
  9. PR:=K*3 DIV D;
  10. FOR A:=0 TO 9 DO
  11. IF A<>K THEN
  12. BEGIN
  13. P1:=A*3+PR; P2:=P1 DIV D; O:=P1 MOD D;
  14. IF(O<>A) AND (O<>K) THEN
  15. FOR L:=0 TO 9 DO
  16. IF (L<>O) AND (L<>A) AND (L<>K) THEN
  17. BEGIN
  18. P3:=L*3+P2; P4:=P3 DIV D; L1:=P3 MOD D;
  19. IF L1=L THEN
  20. FOR S:=1 TO 3 DO
  21. IF (S<>L) AND (S<>A) AND (S<>O) AND (S<>K) THEN
  22. BEGIN
  23. B:=S*3+P4;
  24. IF(B<D)AND(B<>L)AND(B<>A)AND(B<>O)AND(B<>K) THEN
  25. BEGIN SLAK:=S*1000+L*100+A*D+K;
  26. BLOK:=B*1000+L*100+O*D+K;
  27. WRITE (SLAK:5,'*3=',BLOK:5,' ');
  28. INC(FLAG);
  29. IF FLAG>3 THEN
  30. BEGIN WRITELN; FLAG:=0
  31. END;
  32. END
  33. END
  34. END
  35. END;
  36. K:=K+5
  37. UNTIL K>5
  38. END.
Спасите тупенького студента....

Решение задачи: «Решение ребуса: "4 * Дома = Район"»

textual
Листинг программы
  1. var
  2.     d, o, m, a, r, y, n: 0..9;
  3.    
  4.     dig: set of 0..9;
  5.     sum, MaxSum: Integer;
  6.     st: string;
  7.  
  8. begin
  9.     MaxSum := 0;st := '';
  10.     for d := 0 to 9 do
  11.     begin
  12.         include(dig, d);
  13.         for o := 0 to 9 do
  14.             if not (o in dig) then begin
  15.                 include(dig, o);
  16.                 for m := 0 to 9 do
  17.                     if not (m in dig) then begin
  18.                         include(dig, m);
  19.                         for a := 0 to 9 do
  20.                             if not (a in dig) then begin
  21.                                 include(dig, a);
  22.                                 for r := 0 to 9 do
  23.                                     if not (r in dig) then begin
  24.                                         include(dig, r);
  25.                                         for y := 0 to 9 do
  26.                                             if not (y in dig) then begin
  27.                                                 include(dig, y);
  28.                                                 for n := 0 to 9 do
  29.                                                     if not (n in dig) then begin
  30.                                                         include(dig, n);
  31.                                                         if ((1000 * d + 100 * o + 10 * m + a) * 3 = 10000 * r + 1000 * a + 100 * y + 10 * o + n) and (r<>0) then
  32.                                                         begin
  33.                                                             writeln('3*', d, o, m, a, '=', r, a, y, o, n);
  34.                                                         end;
  35.                                                         exclude(dig, n);
  36.                                                     end;
  37.                                                 exclude(dig, y);
  38.                                             end;
  39.                                         exclude(dig, r);
  40.                                     end;
  41.                                 exclude(dig, a);
  42.                             end;
  43.                         exclude(dig, m);
  44.                     end;
  45.                 exclude(dig, o);
  46.             end;
  47.         exclude(dig, d);
  48.     end;  
  49. end.

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

Код решает ребус 4 * Дома = Район

  1. Переменные:
    • d, o, m, a, r, y, n: 0..9 - представляют цифры, которые могут быть использованы в решении ребуса
    • dig: set of 0..9 - множество, которое содержит все возможные цифры
    • MaxSum: Integer - максимальная сумма цифр, которые могут быть использованы в решении ребуса
    • st: string - строка, которая будет содержать решение ребуса
  2. Перебираются все возможные комбинации цифр для каждой позиции в ребусе:
    • Первая позиция: перебираются все цифры от 0 до 9, которые не входят в текущее множество dig
    • Вторая позиция: перебираются все цифры от 0 до 9, которые не входят в текущее множество dig и не являются текущей цифрой на первой позиции
    • Третья позиция: перебираются все цифры от 0 до 9, которые не входят в текущее множество dig, не являются текущей цифрой на первой и второй позициях
    • Четвертая позиция: перебираются все цифры от 0 до 9, которые не входят в текущее множество dig, не являются текущей цифрой на первой, второй и третьей позициях
    • Проверяется условие из ребуса: (1000 d + 100 o + 10 m + a) 3 = 10000 r + 1000 a + 100 y + 10 o + n
    • Если условие выполняется и r не равно 0, то выводится решение ребуса
  3. В конце кода выводится решение ребуса, если оно было найдено

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


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

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

15   голосов , оценка 4.067 из 5

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

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

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