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