Найти количество таких чисел, двоичное представление которых является "перевертышем" - 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.

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

  1. Объявляются константы: Rn - строка, содержащая все возможные символы двоичного представления чисел от 0 до 35, A и B - границы перебора чисел.
  2. Объявляются функции: DecToN - функция, преобразующая десятичное число в строку, представляющую его в двоичной системе счисления, с заданным количеством разрядов в двоичном числе, StRevers - функция, переворачивающая строку.
  3. В основной части программы перебираются все числа от A до B (включительно) с помощью цикла for.
  4. Для каждого числа проверяется, является ли его двоичное представление перевертышем. Для этого вызывается функция StRevers, которой передается двоичное представление числа, полученное с помощью функции DecToN.
  5. Если двоичное представление числа является перевертышем, то выводится число и его двоичное представление.
  6. В функции DecToN используется деление с остатком для определения количества разрядов в двоичном числе.
  7. В функции StRevers используется срез, чтобы получить строку, начиная с последнего символа, затем с предпоследнего, и так далее, пока не будет получена строка, содержащая один символ.
  8. Затем в обратном порядке добавляются символы, начиная с предпоследнего, затем с еще более предпоследнего, и так далее, пока не будет получена исходная строка, перевернутая в обратном порядке.
  9. Если исходная строка содержит один символ, то перевернутая строка остается неизменной.

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


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

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

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