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