Решение ребуса: "4 * Дома = Район" - Free Pascal
Формулировка задачи:
Помогите пожалуйста с решением ребуса.
ДОМА
+ДОМА
+ДОМА
+ДОМА
_______
РАЙОН
В интернете нашла но код не тот.нужно написать ,как пример со(шлак*3=блок)
Спасите тупенького студента....
PROGRAM _1; CONST D=10; TYPE CIPFER=0..9; VAR A,P2,P4,PR,O,L,L1,S,FLAG: CIPFER; K,P1,P3,B,SLAK,BLOK: INTEGER; BEGIN K:=0; FLAG:=0; REPEAT PR:=K*3 DIV D; FOR A:=0 TO 9 DO IF A<>K THEN BEGIN P1:=A*3+PR; P2:=P1 DIV D; O:=P1 MOD D; IF(O<>A) AND (O<>K) THEN FOR L:=0 TO 9 DO IF (L<>O) AND (L<>A) AND (L<>K) THEN BEGIN P3:=L*3+P2; P4:=P3 DIV D; L1:=P3 MOD D; IF L1=L THEN FOR S:=1 TO 3 DO IF (S<>L) AND (S<>A) AND (S<>O) AND (S<>K) THEN BEGIN B:=S*3+P4; IF(B<D)AND(B<>L)AND(B<>A)AND(B<>O)AND(B<>K) THEN BEGIN SLAK:=S*1000+L*100+A*D+K; BLOK:=B*1000+L*100+O*D+K; WRITE (SLAK:5,'*3=',BLOK:5,' '); INC(FLAG); IF FLAG>3 THEN BEGIN WRITELN; FLAG:=0 END; END END END END; K:=K+5 UNTIL K>5 END.
Решение задачи: «Решение ребуса: "4 * Дома = Район"»
textual
Листинг программы
var d, o, m, a, r, y, n: 0..9; dig: set of 0..9; sum, MaxSum: Integer; st: string; begin MaxSum := 0;st := ''; for d := 0 to 9 do begin include(dig, d); for o := 0 to 9 do if not (o in dig) then begin include(dig, o); for m := 0 to 9 do if not (m in dig) then begin include(dig, m); for a := 0 to 9 do if not (a in dig) then begin include(dig, a); for r := 0 to 9 do if not (r in dig) then begin include(dig, r); for y := 0 to 9 do if not (y in dig) then begin include(dig, y); for n := 0 to 9 do if not (n in dig) then begin include(dig, n); if ((1000 * d + 100 * o + 10 * m + a) * 3 = 10000 * r + 1000 * a + 100 * y + 10 * o + n) and (r<>0) then begin writeln('3*', d, o, m, a, '=', r, a, y, o, n); end; exclude(dig, n); end; exclude(dig, y); end; exclude(dig, r); end; exclude(dig, a); end; exclude(dig, m); end; exclude(dig, o); end; exclude(dig, d); end; end.
Объяснение кода листинга программы
Код решает ребус 4 * Дома = Район
- Переменные:
- d, o, m, a, r, y, n: 0..9 - представляют цифры, которые могут быть использованы в решении ребуса
- dig: set of 0..9 - множество, которое содержит все возможные цифры
- MaxSum: Integer - максимальная сумма цифр, которые могут быть использованы в решении ребуса
- st: string - строка, которая будет содержать решение ребуса
- Перебираются все возможные комбинации цифр для каждой позиции в ребусе:
- Первая позиция: перебираются все цифры от 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, то выводится решение ребуса
- В конце кода выводится решение ребуса, если оно было найдено
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д