Тема 5. Алгоритмы – анализ простейших алгоритмов
5.01 Запись числа в двоичной системе счисления
Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела алгоритмы – анализ простейших алгоритмов
Решаем задачи

Ошибка.
Попробуйте повторить позже

Задача 1#74670

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

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

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

   а) если число N  делится на 3, то к этой записи дописываются справа первая и последняя цифры.

   б) если число N  на 3 не делится, то к этой записи слева дописываются последняя и первая цифры.

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

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

Укажите максимальное N  , при котором алгоритм выводит число, меньшее 500.

Показать ответ и решение
ans = []
for n in range(1,1000):
    t = bin(n)[2:]#Записываем двоичную запись числа
    if n % 3 == 0:
        t += t[0]+t[-1]#Если число n кратно 3,то добавляем справа от числа сначала первую цифру числа,затем - последнюю
    else:
        t = t[-1]+t[0] + t# В ином случае добавляем слева от числа сначала последнюю цифру числа,затем - первую
    r = int(t,2)# Переводим число в 10-ричную систему счисления
    if r < 500:
        ans += [n]
print(max(ans))#Выводим максимальное n

Ответ: 242

Ошибка.
Попробуйте повторить позже

Задача 2#72459

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

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

2) К этой записи дописываются биты чётности: 10 дописывается слева, если в двоичном коде числа N  было чётное число нулей, и 11 справа, если нечётное количество нулей.

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

Показать ответ и решение
mn = 10**10

for n in range(1, 500):
    b = bin(n)[2:]
    if b.count(’0’) % 2 == 0:
        b = ’10’ + b
    else:
        b = b + ’11’

    if int(b, 2) > 221:
        mn = min(mn, int(b, 2))

print(mn)

Ответ: 223

Ошибка.
Попробуйте повторить позже

Задача 3#72445

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

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

2) К этой записи дописывается слева бит чётности: 1, если в двоичном коде числа N  было чётное число единиц, и 0, если нечётное.

3) К полученному результату дописывается ещё один бит чётности.

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

Показать ответ и решение
mx = 0

for n in range(1, 500):
    b = bin(n)[2:]
    if b.count(’1’) % 2 == 0:
        b = ’1’ + b
    else:
        b = ’0’ + b

    if b.count(’1’) % 2 == 0:
        b = ’1’ + b
    else:
        b = ’0’ + b

    if int(b, 2) < 333:
        mx = max(mx, int(b, 2))

print(mx)

Ответ: 331

Ошибка.
Попробуйте повторить позже

Задача 4#72443

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

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

2) К этой записи дописывается справа бит чётности: 1, если двоичная запись числа N  является чётной, и 0, если нечётной.

3) К полученному результату дописывается ещё один бит чётности.

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

Показать ответ и решение
mn = 10**10

for n in range(1, 100):
    b = bin(n)[2:]
    if b[-1] == ’0’:
        b += ’1’
    else:
        b += ’0’

    if b[-1] == ’0’:
        b += ’1’
    else:
        b += ’0’

    if int(b, 2) > 157:
        mn = min(mn, int(b, 2))

print(mn)

Ответ: 162

Ошибка.
Попробуйте повторить позже

Задача 5#72410

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

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

2) К этой записи дописывается справа бит по определённым правилам: 0, если в двоичном коде числа N  было количество единиц кратное трём, и 1, если количество единиц некратное трём.

3) К полученному результату дописывается ещё один бит по тем же правилам.

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

Показать ответ и решение
for n in range(1, 100):
    b = bin(n)[2:]
    if b.count(’1’) % 3 == 0:
        b += ’0’
    else:
        b += ’1’

    if b.count(’1’) % 3 == 0:
        b += ’0’
    else:
        b += ’1’

    if int(b, 2) < 215:
        print(n)

Ответ: 52

Ошибка.
Попробуйте повторить позже

Задача 6#72403

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

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

2) К этой записи дописывается справа бит чётности: 1, если в двоичном коде числа N  было чётное число единиц, и 0, если нечётное.

3) К полученному результату дописывается ещё один бит чётности.

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

Показать ответ и решение
mn = 10**10
for n in range(1, 100):
    b = bin(n)[2:]
    if b.count(’1’) % 2 == 0:
        b += ’1’
    else:
        b += ’0’

    if b.count(’1’) % 2 == 0:
        b += ’1’
    else:
        b += ’0’

    if int(b, 2) > 250:
        mn = min(mn, int(b, 2))

print(mn)

Ответ: 254

Ошибка.
Попробуйте повторить позже

Задача 7#63636

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

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

2. К этой записи дописываются справа ещё два разряда по следующему правилу: складываются все цифры двоичной записи, если

   а)сумма нечетная к числу дописывается 11,

   б)сумма четная, дописывается 00.

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

Показать ответ и решение
for number in range(1000):
    binary_number = bin(number)[2:]

    if binary_number.count(’1’) % 2 == 0:
        binary_number += ’00’
    else:
        binary_number += ’11’

    decimal_result = int(binary_number, 2)

    if decimal_result > 201:
        print(number)
        break

Ответ: 50

Ошибка.
Попробуйте повторить позже

Задача 8#63635

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

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

2) К этой записи дописываются справа ещё два разряда по следующему правилу:

   а)складываются все цифры двоичной записи, и остаток от деления суммы на 2 дописывается в конец числа (справа). Например, запись 11100 преобразуется в запись 111001;

   б)над этой записью производятся те же действия - справа дописывается остаток от деления суммы цифр на 2.

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

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

Показать ответ и решение
for number in range(1000):
    binary_number = bin(number)[2:]

    if binary_number.count(’1’) % 2 == 0:
        binary_number += ’0’
    else:
        binary_number += ’1’

    if binary_number.count(’1’) % 2 == 0:
        binary_number += ’0’
    else:
        binary_number += ’1’

    decimal_result = int(binary_number, 2)

    if decimal_result > 73:
        print(decimal_result)
        break

Ответ: 78

Ошибка.
Попробуйте повторить позже

Задача 9#62649

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

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

2. Складываются все цифры полученной двоичной записи. В конец записи (справа) дописывается остаток от деления суммы на 2.

3. Предыдущий пункт повторяется для записи с добавленной цифрой.

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

Какое наименьшее число N надо подать автомату на обработку, чтобы на экране появилось число больше 199?

Показать ответ и решение
for n in range(1, 1000):
    r = bin(n)[2:]
    r = r + str(r.count(’1’) % 2)
    r = r + str(r.count(’1’) % 2)
    r = int(r, 2)
    if r > 199:
        print(n)



Ответ: 50

Ошибка.
Попробуйте повторить позже

Задача 10#62648

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

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

2. Складываются все цифры полученной двоичной записи. В конец записи (справа) дописывается остаток от деления суммы на 2 дважды.

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

Какое наименьшее число, большее 57, может появиться на экране в результате работы автомата?

Показать ответ и решение
for n in range(1, 1000):
    r = bin(n)[2:]
    r =  r + str(r.count(’1’) % 2) + str(r.count(’1’) % 2)
    r = int(r, 2)
    if r > 57:
        print(r)



Ответ: 59

Ошибка.
Попробуйте повторить позже

Задача 11#62647

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

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

2. К этой записи дописывается (дублируется) последняя цифра.

3. Затем справа дописывается бит чётности: 0, если в двоичном коде полученного числа чётное число единиц, и 1, если нечётное.

4. К полученному результату дописывается ещё один бит чётности.

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

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

Показать ответ и решение
for n in range(1, 1000):
    r = bin(n)[2:]
    r = r + r[-1]
    if r.count(’1’) % 2 == 0:
        r = r + ’0’
    else:
        r = r + ’1’
    if r.count(’1’) % 2 == 0:
        r = r + ’0’
    else:
        r = r + ’1’
    r = int(r, 2)
    if r > 204:
        print(r)


Ответ: 210

Ошибка.
Попробуйте повторить позже

Задача 12#62646

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

1. Число N переводим в двоичную запись.

2. Инвертируем все биты числа кроме первого.

3. Переводим в десятичную запись.

4. Складываем результат с исходным числом N.

Полученное число является искомым числом R.

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

Показать ответ и решение
a = []
for n in range(1000):
    r = bin(n)[2:]
    first = r[0]
    r = r[1:]
    r = r.replace(’0’, ’*’)
    r = r.replace(’1’, ’0’)
    r = r.replace(’*’, ’1’)
    r = first + r
    rez = int(r, 2) + n
    if n % 2 != 0 and rez > 85:
        a.append(n)
print(min(a))


Ответ: 33

Ошибка.
Попробуйте повторить позже

Задача 13#62645

Алгоритм получает на вход натуральное число N > 1 и строит по нему новое число R следующим образом:

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

2. Подсчитывается количество нулей и единиц в полученной записи. Если их количество одинаково, в конец записи добавляется её последняя цифра. В противном случае в конец записи добавляется цифра, которая встречается реже.

3. Шаг 2 повторяется ещё два раза.

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

При каком наименьшем исходном числе N > 93 в результате работы алгоритма получится число, кратное 6?

Показать ответ и решение
for n in range(94, 1000):
    r = bin(n)[2:]
    if r.count(’1’) == r.count(’0’):
        r = r + r[-1]
    elif r.count(’1’) > r.count(’0’):
        r = r + ’0’
    else:
        r = r + ’1’
    if r.count(’1’) == r.count(’0’):
        r = r + r[-1]
    elif r.count(’1’) > r.count(’0’):
        r = r + ’0’
    else:
        r = r + ’1’
    if r.count(’1’) == r.count(’0’):
        r = r + r[-1]
    elif r.count(’1’) > r.count(’0’):
        r = r + ’0’
    else:
        r = r + ’1’
    r = int(r, 2)
    if r % 6 == 0:
        print(n)


Ответ: 111

Ошибка.
Попробуйте повторить позже

Задача 14#62644

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

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

2. К этой записи дописываются справа ещё два разряда по следующему правилу:

   2.1 складываются все цифры двоичной записи числа N, и остаток от деления суммы на 2 дописывается в конец числа (справа). Например, запись 11100 преобразуется в запись 111001;

   2.2 над этой записью производятся те же действия – справа дописывается остаток от деления суммы её цифр на 2.

3. Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R.

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

Показать ответ и решение
for n in range(1, 1000):
    r = bin(n)[2:]
    r = r + str(r.count(’1’) % 2)
    r = r + str(r.count(’1’) % 2)
    r = int(r, 2)
    if r > 255:
        print(r)



Ответ: 258

Ошибка.
Попробуйте повторить позже

Задача 15#62643

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

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

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

   2.1 складываются все цифры двоичной записи, и остаток от деления суммы на 2 дописывается в конец числа (справа). Например, запись 10000 преобразуется в запись 100001;

   2.2 над этой записью производятся те же действия — справа дописывается остаток от деления суммы цифр на 2.

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

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

Показать ответ и решение
for n in range(1, 1000):
    r = bin(4 * n)[2:]
    r = r + str(r.count(’1’) % 2)
    r = r + str(r.count(’1’) % 2)
    r = int(r, 2)
    if r > 211:
        print(n)


Ответ: 14

Ошибка.
Попробуйте повторить позже

Задача 16#62642

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

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

2. Складываются все цифры полученной двоичной записи. В конец записи (справа) дописывается остаток от деления суммы на 2 дважды.

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

Какое наименьшее четное число, может появиться на экране в результате работы автомата, если известно, что на вход подавалось число больше 171?

Показать ответ и решение
for n in range(171, 1000):
    r = bin(n)[2:]
    s = str(r.count(’1’) % 2)
    r = r + s + s
    r = int(r, 2)
    if r % 2 == 0:
        print(r)

Ответ: 688

Ошибка.
Попробуйте повторить позже

Задача 17#60023

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

  1. Строится двоичная запись числа 5N.
  2. К этой записи дописываются справа ещё два разряда по следующему правилу:

    складываются все цифры двоичной записи, и остаток от деления суммы на 2 дописывается в конец числа (справа).

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

Показать ответ и решение
for n in range(1, 500):
    b = bin(5*n)[2:]
    b += str(b.count(’1’) % 2)
    b += str(b.count(’1’) % 2)

    if int(b, 2) > 3105:
        print(n)
        break

Ответ: 156

Ошибка.
Попробуйте повторить позже

Задача 18#60022

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

  1. Строится двоичная запись числа N.
  2. К этой записи дописывается справа 10, если в двоичном коде числа N было чётное число единиц, и 11, если нечётное.
  3. К полученному результату дописывается ещё один ноль.

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

Укажите количество исходных чисел N, из которых с помощью этого алгоритма могут быть получены числа R, лежащие в диапазоне 128 ≤ R ≤ 256  .

Показать ответ и решение
c = 0
for n in range(1, 500):
    b = bin(5+n)[2:]
    if b.count(’1’) % 2 == 0:
        b += ’10’
    else:
        b += ’11’
    b += ’0’
    if int(b, 2) >= 128 and int(b, 2) <= 256:
        c += 1
print(c)

Ответ: 16

Ошибка.
Попробуйте повторить позже

Задача 19#60021

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

  1. Строится двоичная запись числа 5 + N.
  2. К этой записи дописываются справа ещё три разряда по следующему правилу:

    а) складываются все цифры двоичной записи, и остаток от деления суммы на 2 дописывается в конец числа (справа).

    б) над этой записью дважды производятся те же действия — справа дописывается остаток от деления суммы цифр на 2;

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

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

Показать ответ и решение
for n in range(1, 100):
    b = bin(5+n)[2:]
    for i in range(3):
        b += str(b.count(’1’) % 2)
    if int(b, 2) < 95:
        print(n)

Ответ: 6

Ошибка.
Попробуйте повторить позже

Задача 20#59583

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

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

2. К этой записи дописываются справа ещё два разряда по следующему правилу:

   а) складываются все цифры двоичной записи числа N, и остаток от деления суммы на 2 дописывается в конец числа (справа). Например, запись 11100 преобразуется в запись 111001;

   б) над этой записью производятся те же действия — справа дописывается остаток от деления суммы её цифр на 2. Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R.

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

Показать ответ и решение
    for n in range (1,100):
    s = bin(n)[2:]
    if s.count(’1’) % 2 == 0:
        s += ’00’
    else:
        s += ’10’
    r = int(s,2)
    if r>124:
        print(n)
        break

Ответ: 31
Рулетка
Вы можете получить скидку в рулетке!