Решение ребуса "ладья+ладья=ферзь" с помощью множеств - PascalABC.NET

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

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

Помогите, пожалуйста, решить ребус ЛАДЬЯ+ЛАДЬЯ=ФЕРЗЬ с помощью множеств. В качетве примера МУХА+МУХА=СЛОН

Решение задачи: «Решение ребуса "ладья+ладья=ферзь" с помощью множеств»

textual
Листинг программы
program Rebus;
Type Mn=set of 0..9;
Var i,j,cnt:integer;
    Sm,Se:Mn;
Procedure Change(t:integer; Var S:Mn);
Begin
S:=[];
while t<>0 do
 begin
  S:=S+[t mod 10];
  t:=t div 10;
 End;
End;
Function Qw(S:Mn):integer;
Var i,cnt:integer;
Begin
cnt:=0;
for i:=0 to 9 do
if i in S then inc(cnt);
Qw:=cnt;
End;
Begin
cnt:=0;
for i:=10000 to 49999 do
 Begin
  Change(i,Sm);
  if Qw(Sm)=5 then
   Begin
    j:=2*i;
    change(j,Se);
    if (Sm*Se=[]) and (Qw(Se)=5) then
     begin
      inc(cnt);
      writeln(i,'+',i,'=',j);
     end;
   end;
 end;
writeln(cnt);
End.

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

Список элементов кода:

  1. Объявление типа данных Mn, который является множеством из 10 элементов (цифры от 0 до 9).
  2. Объявление переменных i, j, cnt (счетчик) типа integer.
  3. Объявление переменных Sm, Se типа Mn.
  4. Определение процедуры Change, которая принимает целое число t и изменяет множество S, добавляя в него все цифры числа t, начиная с последней.
  5. Определение функции Qw, которая принимает множество S и возвращает количество элементов в этом множестве.
  6. Начало основного блока кода.
  7. Инициализация счетчика cnt в 0.
  8. Цикл от 10000 до 49999, выполняющий следующие действия:
    • Вызов процедуры Change для числа i, чтобы получить множество Sm.
    • Если Qw(Sm)=5, то:
      • Удвоение числа i и вызов процедуры Change для полученного числа, чтобы получить множество Se.
      • Если Sm*Se=[] и Qw(Se)=5, то:
        • Увеличение значения счетчика cnt.
        • Вывод на экран уравнения i + i = 2*i.
  9. Вывод на экран значения счетчика cnt. Пояснение к коду:
    • В процедуре Change используется цикл while, чтобы разделить число t на десятки и единицы и добавить каждую цифру в множество S.
    • Функция Qw использует цикл for и оператор if для подсчета количества элементов в множестве S.
    • В основном блоке кода используется цикл for, чтобы проверить все числа в заданном диапазоне.
    • Если Qw(Sm)=5, то это означает, что число i может быть представлено в виде ладьи (цифры 1 и 2).
    • Если уравнение i + i = 2i выполняется и Qw(Se)=5, то это означает, что число 2i также может быть представлено в виде ладьи.
    • В результате на экран выводится уравнение, которое представляет собой решение ребуса ладья+ладья=ферзь.
    • Значение счетчика cnt на конце программы показывает количество найденных решений.

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


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

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

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