Решение ребуса: "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, то выводится решение ребуса
- В конце кода выводится решение ребуса, если оно было найдено
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д