Задание 05. Разные системы счисления

Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
 

Задание 5. Двоичная система счисления

На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.

1)  Строится двоичная запись числа N.

2)  Далее если исходное число четное, то справа к построенной двоичной записи числа N приписывается 0, если нечетное, то приписывается 1.

3)  Далее полученная на втором шаге алгоритма запись обрабатывается по следующему правилу:

а)  если количество единиц в двоичной записи кратно трем, то в этой записи два левых разряда заменяются на 11;
б)  если количество единиц в двоичной записи некратно трем, то в этой записи два левых разряда заменяются на 10.

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

Например, для исходного числа 610 = 1102 результатом является число 10002 = 810, а для исходного числа 310 = 112, результатом является число 1112 = 710. 

Укажите минимальное число N, после обработки которого с помощью этого алгоритма получается число R, не меньшее чем 26.  В ответе запишите  это число в десятичной системе счисления.


Решение и ответ
  

for x in range(1,30): #перебираем х 
    N=bin(x)[2:] #получаем двоичную запись, убираем первые 2 символа 0b
    if N[-1]== '0': # преобразование 2 шага
        N = N + '0'
    else:
        N = N + '1'

    if N.count('1')%3 == 0: # преобразование 3 шага
        R=N.replace(N[:2],'11', 1)
    else:
        R=N.replace(N[:2],'10', 1)

    print(x, int(R,2)) # переводим R в десятичную систему счисления

Из таблицы значений видим, что наименьшее N = 9 для R = 27

Ответ9

Задание 5. Восьмибитная двоичная система счисления

Автомат обрабатывает натуральное число N(1≤N≤255)N(1N255) по следующему алгоритму:

  1. Строится восьмибитная двоичная запись числа N.

  2. Удаляется последняя цифра двоичной записи.

  3. Запись «переворачивается», то есть читается справа налево.

  4. Полученное число переводится в десятичную запись и выводится на экран.

Каково наибольшее число, меньшее 100, которое после обработки автоматом не изменится?

Решение и ответ
for N in range (1, 100):
  N1 = '{0:08b}'.format(N)
  N2 = N1[:-1]
  N3 = N2[::-1]
  r = int(N3, 2)
  if N == r:
    print (N)

Ответ90

Задание 5. Троичная система счисления

На вход алгоритма подаётся натуральное число 

N. Алгоритм строит по нему новое число 
R таким образом:

  1. Строится троичная запись числа N
  2. В полученной записи вычисляется количество цифр 2. Это число переводится в троичный вид и дописывается справа
  3. В полученной записи вычисляется количество цифр 1. Это число переводится в троичный вид и дописывается справа
  4. В полученной записи вычисляется количество цифр 0. Это число переводится в троичный вид и дописывается справа

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

Например, для исходного числа 55 алгоритм пройдет через такие шаги:

123→1213→12123→121203=150

Укажите максимальное число N, после обработки которого с помощью этого алгоритма получается число R, меньшее 1000. В ответе запишите это число в десятичной системе счисления.

Решение и ответ
 
def tr(x): # функция для перевода в троичную сс
  if x == 0: return '0' # не забываем про 0
  y = ''
  while x > 0:
    y = str(x % 3) + y
    x = x //3
  return y # возвращаем строку в троичной системе счисления

for N in range(1,100): # перебираем N
  s = tr(N) # переводим в троичную запись 
  s += tr(s.count('2')) # добавляем к числу справа количество двоек в троичной записи
  s += tr(s.count('1'))  #добавляем к числу справа количество единиц в троичной записи
  s += tr(s.count('0')) #добавляем к числу справа количество нулей в троичной записи
  r = int(s, 3) # переводим в десятичную сс
  print (N, r)

Ответ: 35

Задание 5. Четверичная система счисления

На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.

  1. Строится четверичная запись числа N.
  2. Далее эта запись обрабатывается по следующему правилу:
    a) если число 
    N делится на 
    4, то к этой записи справа дописываются две последние четверичные цифры
    б) если число 
    N на 
    4 не делится, то вычисляется сумма цифр полученной четверичной записи, эта сумма умножается на 
    4, переводится в четверичную систему счисления и дописывается в конец числа

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

  1. Результат переводится в десятичную систему и выводится на экран.

Укажите минимальное чётное число 
R, большее 
211, которое кратно трём и может быть получено с помощью описанного алгоритма.

В ответе запишите это число в десятичной системе счисления.

 

Решение и ответ
 

def cht(x): # функция для перевода в четверичную сс

  if x == 0: return '0' 
  y = ''
  while x > 0:
    y = str(x % 4) + y
    x = x // 4

  return y # возвращаем строку в четверичной системе счисления

for N in range(1,100): # перебираем N
    s = cht(N) # переводим в четверичную запись
    if N % 4 == 0:
      s += s[-2:]
    else:
        s += cht(4*sum(map(int,s)))  #добавляем к числу справа сумму цифр, умноженную на 4 в четверичной сс
    r = int(s, 4) # переводим в десятичную сс
    if r > 211 and r % 6 == 0:
        print (N, r)

 

 

 Ответ300

Задание 5. Пятиричная система счисления

На вход алгоритма подаётся натуральное число N > 100. Алгоритм строит по нему новое число R следующим образом.
  1. Строится пятеричная запись числа N.
  2. Далее эта запись обрабатывается по следующему правилу:
    а) если число N чётное, то к этой записи справа дописывается сумма двух последних пятеричных цифр, переведенная в пятеричную систему;
    б) если число N нечётное, то в начало записи дописывается последняя цифра этой записи. Полученная таким образом запись является пятеричной записью искомого числа R.
  3. Результат переводится в десятичную систему и выводится на экран.

Примеры:
Для 
N=316:
316→22315→22314→1584
Для 
N=317:
317→22325→22232→1567


Укажите минимальное число N, после обработки которого с помощью этого алгоритма получается число R, большее 1000.

 

Решение и ответ
 def pt(x): # функция для перевода в пятиричную сс

  if x == 0: return '0' # не забываем про 0
  y = ''
  while x > 0:
    y = str(x % 5) + y
    x = x // 5
  return y # возвращаем строку в пятиричной системе счисления

for N in range(101, 200): # перебираем N
    s = pt(N) # переводим в пятиричную запись
    if N % 2 == 0:
        s += pt(int(s[-1])+int(s[-2])) # добавляем к числу справа сумму последних двух цифр числа в пятиричной сс

    else:
        s = s[-1] + s  #добавляем к числу слева последнюю цифру
    r = int(s, 5) # переводим в десятичную сс
    if r > 1000:
        print (N)
        break

Ответ114

 

Задание 5. Семеричная система счисления

На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R:

  1. Строится семеричная запись числа N.
  2. Далее эта запись обрабатывается так:
    а) если число N делится на 7, к этой записи дописываются две последние семеричные цифры
    б) если число N на 7 не делится, остаток от деления умножается на 2, переводится в семеричную запись и дописывается в конец числа.
    Таким образом получается семеричная запись искомого числа R.
  3. Результат переводится в десятичную систему и выводится на экран.

Например, для исходного числа 6=67​ результат - число 615= 306, а для исходного числа 7 = 107- число 1010= 350.

Укажите максимальное число N, после обработки которого с помощью этого алгоритма получается число R, меньшее 220.

Решение и ответ
def sm(x): # функция для перевода в семеричную сс
  y = ''
  while x > 0:
    y = str(x % 7) + y
    x = x // 7
  return y # возвращаем строку в семеричной системе счисления

for N in range(1,100): # перебираем N
    s = sm(N) # переводим в семеричную запись
    if N % 7 == 0:
      s += s[-2:]# добавляем две последние цифры
    else:
      s += sm(2 * (N % 7))  #добавляем к числу справа удвоенный остаток от деления на 7 в семеричной сс
    r = int (s, 7)
    if r < 220:
      print (N, r)

Ответ: 30

 

Задание 5. Двенадцатиричная система счисления

На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.

  1. Строится запись числа N в системе счисления с основанием 12.

  2. Далее эта запись обрабатывается по следующему правилу:

    а) если число N делится на 4, то слева к нему приписывается «2», а справа «64»;
    б) если число N на 4 не делится, то в конец числа дописывается его максимальная цифра в системе счисления с основанием 12.

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

  3. Результат переводится в десятичную систему и выводится на экран.

Например, для исходного числа 11=B12 результатом является число BB12=143, а для исходного числа 12=1012 это число 2106412=43276.

Укажите минимальное число R, большее 1799, которое может быть получено с помощью описанного алгоритма. В ответе запишите это число в десятичной системе счисления.

 

Решение и ответ

def dv(x): # функция для перевода в двенадцатиричную сс
  if x == 0: return '0' # не забываем про 0
  y = ''
  while x > 0:
    y = str(x % 12) + y
    x = x // 12
  return y # возвращаем строку в двенадцатиричной системе счисления

min_r = 1000000 #потолок для r

for N in range(1,150): # перебираем N, если брать диапазон до 100, не получим верный ответ
    s = dv(N) # переводим в двенадцатиричную запись
    if N % 4 == 0:
      s = '2' + s + '64'
    else:
      m = [int(i) for i in s]
      s += dv(max(m))  #добавляем к числу справа максимальную цифру в сс с основанием 12
    r = int (s, 12)
    if r> 1799:
       min_r = min(min_r, r)

print (min_r)

Ответ1806

 

© 2017 Компьютерный клуб "КОД". Все права защищены