Найти количество таких чисел, двоичное представление которых является "перевертышем" - PascalABC.NET
Формулировка задачи:
Составьте программу, которая среди чисел от A до B (1<=A,B<=32000) найдет количество таких чисел, двоичное представление которых является перевертышем, т.е. читаются одинаково справа налево и слева направо.
Решение задачи: «Найти количество таких чисел, двоичное представление которых является "перевертышем"»
textual
Листинг программы
Const Rn : String[36] = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'; Function DecToN(a : Longint; Raz : Byte) : String; Begin If a>Raz-1 then DecToN:=DecToN(a div Raz,Raz)+Rn[(a mod Raz)+1] else DecToN:=Rn[a+1]; end; Function StRevers(St : String) : String; Begin If Length(St)>1 then StRevers:=St[Length(St)]+StRevers(Copy(St,2,Length(St)-2))+St[1] else StRevers:=St; end; Const A = 1; B = 32000; Var i : Integer; Begin For i:=A to B do If DecToN(i,2)=StRevers(DecToN(i,2)) then Writeln(i:8,' ',DecToN(i,2)); end.
Объяснение кода листинга программы
- Объявляются константы: Rn - строка, содержащая все возможные символы двоичного представления чисел от 0 до 35, A и B - границы перебора чисел.
- Объявляются функции: DecToN - функция, преобразующая десятичное число в строку, представляющую его в двоичной системе счисления, с заданным количеством разрядов в двоичном числе, StRevers - функция, переворачивающая строку.
- В основной части программы перебираются все числа от A до B (включительно) с помощью цикла for.
- Для каждого числа проверяется, является ли его двоичное представление
перевертышем
. Для этого вызывается функция StRevers, которой передается двоичное представление числа, полученное с помощью функции DecToN. - Если двоичное представление числа является
перевертышем
, то выводится число и его двоичное представление. - В функции DecToN используется деление с остатком для определения количества разрядов в двоичном числе.
- В функции StRevers используется срез, чтобы получить строку, начиная с последнего символа, затем с предпоследнего, и так далее, пока не будет получена строка, содержащая один символ.
- Затем в обратном порядке добавляются символы, начиная с предпоследнего, затем с еще более предпоследнего, и так далее, пока не будет получена исходная строка, перевернутая в обратном порядке.
- Если исходная строка содержит один символ, то перевернутая строка остается неизменной.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д