Тема 5. Алгоритмы – анализ простейших алгоритмов

5.01 Запись числа в двоичной системе счисления

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

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

Задача 61#60021Максимум баллов за задание: 1

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

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

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

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

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

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

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

Решение программой

В условии задачи описан алгоритм, для поска подходящего числа N необходмо «перевести» этот алгоритм с естественного языка на язык программирования Python. Сначала переводим число N + 5  в двоичную строку с помощью bin() и убираем префикс ’0b’. Далее трижды повторяем операцию добавления бита чётности. Считаем количество единиц методом .count(’1’). Находим остаток от деления на 2 и дописываем его справа к строке, используя конкатенацию строк (оператор +). После этого переводим полученную двоичную строку в десятичное число с помощью int(строка, 2).

В цикле перебираем значения N от 1 до 99, для каждого вычисляем R и проверяем, что оно меньше 95. Чтобы найти наибольшее подходящее N, будем каждый раз при выполнении условия сохранять его в отдельной переменной. После окончания перебора выводим результат.

mn = -1  # Переменная для хранения наибольшего подходящего N

# Перебираем числа N от 1 до 99
for n in range(1, 100):
    # Получаем двоичную запись числа 5 + N (без ’0b’)
    b = bin(5 + n)[2:]

    # Трижды добавляем бит чётности
    for i in range(3):
        b += str(b.count(’1’) % 2)

    # Переводим полученную запись в десятичное число R
    r = int(b, 2)

    # Проверяем условие R < 95
    if r < 95:
        mn = n  # Сохраняем текущее N

print(mn)  # Выводим наибольшее N

Ответ: 6

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

Задача 62#60022Максимум баллов за задание: 1

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

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

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

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

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

Решение программой

В условии задачи описан алгоритм, для поска подходящего числа N необходмо «перевести» этот алгоритм с естественного языка на язык программирования Python. Сначала переводим число N в двоичную строку с помощью bin() и убираем префикс ’0b’. Считаем количество единиц методом .count(’1’) и определяем чётность. Если число единиц чётное — дописываем ’10’, иначе — дописываем ’11’, используя конкатенацию строк (оператор +). После этого к результату приписываем еще ’0’. Полученную двоичную строку переводим в десятичное число функцией int(строка, 2) и проверяем, входит ли оно в диапазон.

Организуем перебор всех N от 1, для каждого считаем R и при выполнении условия увеличиваем счётчик. В конце выводим количество подходящих чисел.

c = 0  # Счётчик подходящих N

# Перебираем числа N от 1 до 499
for n in range(1, 500):
    # Двоичная запись числа N (без ’0b’)
    b = bin(n)[2:]

    # Проверяем чётность числа единиц
    if b.count(’1’) % 2 == 0:
        b += ’10’ # Если количество чётное, то дописываем ’10’
    else:
        b += ’11’ # Если количество нечётное, то дописываем ’11’

    # Добавляем ещё один ноль справа
    b += ’0’

    # Переводим в десятичное число
    r = int(b, 2)

    # Проверяем диапазон
    if 128 <= r <= 256:
        c += 1 # Увеличиваем счётчик

print(c)  # Выводим количество подходящих N

Ответ: 16

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

Задача 63#60023Максимум баллов за задание: 1

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

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

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

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

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

Решение программой

В условии задачи описан алгоритм, для поска подходящего числа 5N  необходмо «перевести» этот алгоритм с естественного языка на язык программирования Python. Сначала переводим число N в двоичную строку с помощью bin(), убирая префикс ’0b’. Далее дважды выполняем добавление числа в конец строки, используя конкатенацию строк (оператор +). Считаем количество единиц методом .count(’1’). Находим остаток от деления на 2 и дописываем его в конец строки. После этого переводим полученную двоичную строку в десятичное число функцией int(строка, 2).

Перебираем значения N, начиная с 1, вычисляем R и проверяем, превышает ли оно 3105. При первом выполнении условия выводим текущее N и прерываем цикл.

# Перебираем числа N от 1 до 499
for n in range(1, 500):
    # Получаем двоичную запись числа 5*n без префикса ’0b’
    b = bin(5 * n)[2:]

    # Считаем количество единиц и добавляем бит чётности (остаток от деления на 2)
    b += str(b.count(’1’) % 2)

    # Повторяем операцию для обновлённой строки
    b += str(b.count(’1’) % 2)

    # Переводим полученную двоичную строку в десятичное число
    if int(b, 2) > 3105:
        # Если число больше 3105, выводим N и прерываем цикл
        print(n)
        break

Ответ: 156

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

Задача 64#60024Максимум баллов за задание: 1

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

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

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

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

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

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

Решение программой В условии задачи описан алгоритм, для поиска подходящего числа R необходимо «перевести» этот алгоритм с естественного языка на язык программирования Python. Сначала преобразуем число N по заданному правилу (вычитаем остаток от деления на 7 и прибавляем остаток от деления на 5), затем переводим результат в двоичную систему с помощью bin(). К полученной двоичной записи дважды дописываем остаток от деления суммы её цифр на 2, используя конкатенацию строк (оператор +) и помня, что сумма цифр двоичной записи то же самое, что и количество единиц в ней.

Далее организуем перебор чисел N в цикле for. Для каждого полученного значения R проверяем, превышает ли оно 46. Если условие выполняется, обновляем минимальное значение.

mn = 10**10 # Инициализация переменной для хранения минимального R > 46
for n in range(1, 500): # Перебираем все числа N от 1 до 499
    n = n - n % 7 + n % 5 # Вычитаем остаток от деления N на 7 и прибавляем остаток от деления N на 5
    b = bin(n)[2:] # Получаем двоичную запись N (без префикса ’0b’)
    b += str(b.count(’1’) % 2) # Приписываем остаток от деления на 2 суммы цифр
    b += str(b.count(’1’) % 2) # Повторяем предыдущий шаг
    if int(b, 2) > 46: # Преобразуем полученную двоичную строку в десятичное число R и проверяем условие
        mn = min(mn, int(b, 2)) # Обновляем минимальное R
print(mn) # Выводим результат

Ответ: 58

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

Задача 65#62642Максимум баллов за задание: 1

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

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

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

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

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

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

Решение программой

В условии задачи описан алгоритм, для поска подходящего числа N необходмо «перевести» этот алгоритм с естественного языка на язык программирования Python. Сначала переводим число N в двоичную строку с помощью bin(). Далее вычисляем остаток от деления суммы цифр числа на 2. Для этого при помощи метода count() найдем количество единиц. Далее найдем остаток от деления на 2 и сохраним его в отдельную переменную. Теперь при помощи конкатенации строк (оператор +) дважды добавим к иходной строке остаток от деления.

Далее организуем перебор чисел N в цикле for. Для каждого полученного значения R проверяем, что оно является чётным. Если условие выполняется, выводим текущее число R.

# Перебираем все числа N от 171 до 999
for n in range(171, 1000):
    # Получаем двоичную запись числа n без префикса ’0b’
    r = bin(n)[2:]

    # Считаем количество единиц и вычисляем бит чётности (остаток от деления на 2)
    s = str(r.count(’1’) % 2)

    # Дописываем бит чётности дважды справа
    r = r + s + s

    # Переводим полученную строку в десятичное число
    r = int(r, 2)

    # Проверяем, что число R чётное
    if r % 2 == 0:
        # Выводим число R
        print(r)

Ответ: 688

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

Задача 66#62643Максимум баллов за задание: 1

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

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

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

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

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

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

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

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

Решение программой

В условии задачи описан алгоритм, для поска подходящего числа 4N необходмо «перевести» этот алгоритм с естественного языка на язык программирования Python. Сначала переводим число N в двоичную строку с помощью bin(). Далее дважды вычисляем остаток от деления сумы цифр числа на 2. Сумма цифр двоичного числа - это количество единиц в этом числе, поэтому вычисляем количество единиц при помощи метода count(). Далее находим остаток от деления на 2 и дописываем его в конец строки, спользуя конкатенацию строк (оператор +).

Далее организуем перебор чисел N в цикле for. Для каждого полученного значения R проверяем, что оно больше 211. Если условие выполняется, то выводим значение N

for n in range(1, 1000):
    # Получаем двоичную запись числа 4*n без префикса ’0b’
    r = bin(4 * n)[2:]

    # Считаем количество единиц и добавляем бит чётности справа
    r = r + str(r.count(’1’) % 2)

    # Повторяем добавление бита чётности для обновлённой строки
    r = r + str(r.count(’1’) % 2)

    # Переводим двоичную строку в десятичное число
    r = int(r, 2)

    # Проверяем, что число R больше 211
    if r > 211:
        # Выводим значение N
        print(n)

Ответ: 14

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

Задача 67#62644Максимум баллов за задание: 1

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

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

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

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

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

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

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

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

Решение программой
В условии задачи описан алгоритм, для поиска подходящего числа необходимо «перевести» этот алгоритм с естественного языка на язык программирования Python. Первым делом переводим число N в двоичную строку с помощью функции bin. Далее заметим, что сумма цифр двоичной записи совпадает с количеством единиц в ней, так как цифр 2, 3 и более нет. Вычисляем сумму цифр (количество единиц), используя метод count, находим остаток от деления на 2 (% 2), дописываем в конец записи с помощью сложения строк. Повторяем то же самое для обновлённой записи. В завершение переводим результат в десятичную систему счисления.

Далее организуем перебор чисел N в цикле for. Для каждого полученного значения проверяем, превышает ли оно 255 и является ли минимальным среди полученных. Если условие выполняется, обновляем наименьшее значение. После завершения цикла выводим минимальный результат работы алгоритма, больший 255.

mn = 10 ** 10  # Инициализация переменной для хранения минимального результата > 255

for n in range(1, 10000):  # Перебираем числа N от 1 до 9999 включительно
    s = bin(n)[2:]  # Перевод в двоичную систему

    # Считаем количество единиц (сумму цифр) с помощью count,
    # находим остаток (% 2), дописываем в конец s
    s = s + str(s.count("1") % 2)
    s = s + str(s.count("1") % 2)  # Повторяем для обновлённой записи

    r = int(s, 2)  # Переводим в десятичную систему

    # Проверяем, что результат > 255, то есть подходит по условию, и меньше минимального
    if r > 255 and r < mn:
        mn = r
print(mn)

Ответ: 258

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

Задача 68#62645Максимум баллов за задание: 1

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

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

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

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

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

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

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

Решение программой
В условии задачи описан алгоритм, для поиска подходящего числа N необходимо «перевести» этот алгоритм с естественного языка на язык программирования Python. Первым делом переводим число N в двоичную строку с помощью функции bin. Шаг 3 дублирует шаг 2 ещё два раза, поэтому, чтобы избежать повторения кода, будем использовать цикл for. Внутри него подсчитаем количество нулей и единиц, используя count, сравним их и допишем соответствующие цифры. Осталось перевести результат в десятичную систему счисления, после чего получим R.
Далее организуем перебор чисел N > 93 в цикле for. Для каждого полученного значения R проверяем кратность шести. Если условие выполняется, выводим N и завершаем цикл, ведь нас интересует наименьшее N, а следующие значения будут больше, так как цикл перебирает их по возрастанию.

for n in range(94, 5000):  # Перебираем числа 93 < N
    b = bin(n)[2:]  # Перевод в двоичную систему
    for i in range(3):  # Тело цикла выполнится 3 раза
        # Сравниваем количество единиц и нулей,
        # дописываем соответствующие цифры
        if b.count("0") == b.count("1"):
            b += b[-1]
        elif b.count("0") < b.count("1"):  # 0 встречается реже
            b += "0"
        else:  # 1 встречается реже
            b += "1"

    r = int(b, 2)  # Переводим в десятичную систему

    if r % 6 == 0:  # Получаем R
        # Первое выведенное N будет минимальным
        print(n)  # Выводим N
        break  # Завершаем цикл

Ответ: 111

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

Задача 69#62646Максимум баллов за задание: 1

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

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

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

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

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

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

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

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

Решение программой

В условии задачи описан алгоритм, для поиска подходящего нечётного числа N необходимо «перевести» этот алгоритм с естественного языка на язык программирования Python. Сначала переводим число N в двоичную строку с помощью bin(), затем инвертируем все биты кроме первого. Удобнее всего сделать это будет, сохранив первую цифру в отдельную перемену, а в оставшейся строке произвести замены цифр с помощью метода replace(). Полученный результат преобразуем обратно в десятичное число и складываем с исходным N.

Далее организуем перебор чисел N в цикле for. Для каждого полученного значения проверяем два условия: является ли N нечётным и превышает ли полученный результат значение 85. Все подходящие значения N сохраняем в список, после чего находим минимальное из них.

a = [] # Список для хранения подходящих N
for n in range(1000): # Перебираем все числа N от 1 до 999
    r = bin(n)[2:] # Получаем двоичную запись N (без префикса ’0b’)
    first = r[0] # Сохраняем первую цифру числа
    r = r[1:] # Берем срез числа без первой цифры
    r = r.replace(’0’, ’*’) # Заменяем все нули в строке на *
    r = r.replace(’1’, ’0’) # Заменяем все единицы в строке на 0
    r = r.replace(’*’, ’1’) # Заменяем все * (старые нули) в строке на 1
    r = first + r # Приписываем слева первую цифру исходного числа
    rez = int(r, 2) + n # Преобразуем полученную двоичную строку в десятичное число R и складываем с N
    if n % 2 != 0 and rez > 85: # Проверяем, что N нечетное и что полученный результат > 85
        a.append(n) # Добавляем текущее N в список
print(min(a)) # Выводим минимальное из подходящих N

Ответ: 33

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

Задача 70#62647Максимум баллов за задание: 1

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

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

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

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

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

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

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

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

Решение программой
В условии задачи описан алгоритм, для поиска подходящего числа R необходимо «перевести» этот алгоритм с естественного языка на язык программирования Python. Сначала переводим число N в двоичную строку с помощью функции bin, дублируем последнюю цифру. Затем вычисляем количество единиц с помощью метода count. Если это количество чётное, дописываем справа 0, используя конкатенацию строк (оператор +). Если нечётное, дописываем 1. Повторяем те же действия для изменённой двоичной записи, переводим результат в десятичную систему счисления, получаем R.
Далее организуем перебор чисел N в цикле for. Для каждого полученного значения проверяем, превышает ли оно 204 и является ли минимальным среди полученных. Если условие выполняется, обновляем наименьшее значение. После завершения цикла выводим минимальный результат работы алгоритма, больший 204.

mn = 10 ** 10  # Инициализация переменной для хранения минимального результата > 204

for i in range(1, 1000):  # Перебираем числа N от 1 до 999 включительно
    s = bin(i)[2:]  # Перевод в двоичную систему
    s += s[-1]  # Дублируем последнюю цифру

    # Вычисляем бит чётности
    if s.count("1") % 2 == 0:
        # Если количество единиц чётно, дописываем 0, иначе - 1
        s += "0"
    else:
        s += "1"

    # Повторяем предыдущий шаг, но уже для изменённой записи
    if s.count("1") % 2 == 0:
        s += "0"
    else:
        s += "1"

    r = int(s, 2)  # Переводим в десятичную систему

    # Проверяем, что результат > 204, то есть подходит по условию, и меньше минимального
    if r > 204 and r < mn:
        mn = r
print(mn)

Ответ: 210

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

Задача 71#62648Максимум баллов за задание: 1

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

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

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

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

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

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

Решение программой
В условии задачи описан алгоритм, для поиска подходящего числа R необходимо «перевести» этот алгоритм с естественного языка на язык программирования Python. Первым делом переводим число N в двоичную строку с помощью функции bin. Заметим, что сумма цифр двоичной записи совпадает с количеством единичек в ней, поэтому достаточно использовать count("1") для вычисления суммы цифр. Далее допишем остаток от деления суммы цифр на 2, используя конкатенацию строк. Осталось перевести результат в десятичную систему счисления, после чего получим R.
Далее организуем перебор чисел N в цикле for. Для каждого полученного значения R проверяем, превышает ли 57 и меньше ли текущего минимума. Если условие выполняется, обновляем наименьшее значение R. После завершения цикла выводим минимальное R.

mn = 10 ** 10  # Инициализация переменной для хранения минимального чётного R

for n in range(1, 1000):  # Перебор значений N от 1 до 999 включительно
    r = bin(n)[2:]  # Получаем двоичную запись числа N
    s = str(r.count(’1’) % 2)  # Находим остаток от деления суммы цифр на 2
    r = r + s + s  # Дописываем два раза остаток
    r = int(r, 2)  # Получаем итоговое число в десятичной системе счисления

    # Проверяем, что r > 57 и меньше текущего минимума
    if r > 57 and r < mn:
        mn = r
print(mn)

Ответ: 59

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

Задача 72#62649Максимум баллов за задание: 1

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

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

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

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

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

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

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

Решение программой
В условии задачи описан алгоритм, для поиска подходящего числа N необходимо «перевести» этот алгоритм с естественного языка на язык программирования Python. Первым делом переводим число N в двоичную строку с помощью функции bin. Заметим, что сумма цифр двоичной записи совпадает с количеством единичек в ней, поэтому достаточно использовать count("1") для вычисления суммы цифр. Далее допишем остаток от деления суммы цифр на 2, используя конкатенацию строк. Повторим то же действие для обновлённой записи. Осталось перевести результат в десятичную систему счисления, после чего получим R.
Далее организуем перебор чисел N в цикле for. Для каждого полученного значения R проверяем, превышает ли оно 199. Если условие выполняется, выводим N и завершаем цикл, ведь нас интересует наименьшее N, а следующие значения N будут больше, так как цикл перебирает их по возрастанию.

for n in range(1, 10000):  # Перебираем числа N от 1 до 9999 включительно
    s = bin(n)[2:]  # Перевод в двоичную систему

    # Считаем количество единиц (сумму цифр) с помощью count,
    # находим остаток (% 2), дописываем в конец s
    s = s + str(s.count("1") % 2)
    s = s + str(s.count("1") % 2)  # Повторяем для обновлённой записи

    if int(s, 2) > 199:  # Получаем R
        # Первое выведенное N будет минимальным
        print(n)  # Выводим N
        break  # Завершаем цикл

Ответ: 50

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

Задача 73#62820Максимум баллов за задание: 1

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

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

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

   а) Ставится бит четности, т.е. если сумма цифр в двоичной записи четная, то ставится 0, иначе - 1

   б) Ставится цифра, обратная предыдущей.

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

Укажите минимальное число N, результатом обработки которого станет число, превышающее 90?

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

Решение программой
В условии задачи описан алгоритм, для поиска подходящего числа N необходимо «перевести» этот алгоритм с естественного языка на язык программирования Python. Сначала переводим число N в двоичную строку с помощью функции bin, затем вычисляем количество единиц с помощью метода count. Если это количество чётное, дописываем справа 01, используя конкатенацию строк (оператор +). Если нечётное, дописываем 10. Наконец, переводим полученный результат в десятичную систему счисления и получаем R.
Далее организуем перебор чисел N в цикле for. Для каждого полученного значения R проверяем, превышает ли оно 90. Если условие выполняется, выводим N и завершаем цикл, ведь нас интересует наименьшее N, а следующие значения N будут больше, так как цикл перебирает их по возрастанию.

# Перебираем числа от 1 до 999
for number in range(1000):
    # Преобразуем текущее число в двоичную систему и отбрасываем первые два символа ("0b")
    binary_number = bin(number)[2:]

    # Если количество единиц в двоичной записи числа четно
    if binary_number.count("1") % 2 == 0:
        # добавляем бит четности "0" и обратный ему "1"
        binary_number += "01"
    else:
        # иначе добавляем бит четности "1" и обратный ему "0"
        binary_number += "10"

    # Переводим полученное двоичное число в десятичную систему
    decimal_result = int(binary_number, 2)

    # Если полученное число больше 90
    if decimal_result > 90:
        # выводим исходное число и прерываем цикл
        print(number)
        break

Ответ: 23

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

Задача 74#63521Максимум баллов за задание: 1

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

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

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

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

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

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

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

Решение программой
В условии задачи описан алгоритм, для поиска подходящего числа R необходимо «перевести» этот алгоритм с естественного языка на язык программирования Python. Первым делом переводим число N в двоичную строку с помощью функции bin. Заметим, что сумма цифр двоичной записи совпадает с количеством единичек в ней, поэтому достаточно использовать count("1") для вычисления суммы цифр. Далее допишем остаток от деления суммы цифр на 2, используя конкатенацию строк. Повторим то же действие для обновлённой записи. Осталось перевести результат в десятичную систему счисления, после чего получим R.

Далее организуем перебор чисел N в цикле for. Для каждого полученного значения R проверяем, меньше ли оно 50 и является ли наибольшим среди полученных.. Если условие выполняется, обновляем наибольшее значение R. После завершения цикла выводим максимальное R.

mx = -10 ** 10  # Инициализация переменной для хранения максимально результата < 50

for n in range(1, 10000):  # Перебираем числа N от 1 до 9999 включительно
    s = bin(n)[2:]  # Перевод в двоичную систему

    # Считаем количество единиц (сумму цифр) с помощью count,
    # находим остаток (% 2), дописываем в конец s
    s = s + str(s.count("1") % 2)
    s = s + str(s.count("1") % 2)  # Повторяем для обновлённой записи

    r = int(s, 2)  # Переводим в десятичную систему

    # Проверяем, что результат < 50, то есть подходит по условию, и больше максимального
    if r < 50 and r > mx:
        mx = r
print(mx)

Ответ: 48

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

Задача 75#63635Максимум баллов за задание: 1

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

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

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

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

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

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

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

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

Решение программой
В условии задачи описан алгоритм, для поиска подходящего числа R необходимо «перевести» этот алгоритм с естественного языка на язык программирования Python. Первым делом переводим число N в двоичную строку с помощью функции bin. Заметим, что сумма цифр двоичной записи совпадает с количеством единичек в ней, поэтому достаточно использовать count("1") для вычисления суммы цифр. Далее допишем остаток от деления суммы цифр на 2, используя конкатенацию строк. Повторим то же действие для обновлённой записи. Осталось перевести результат в десятичную систему счисления, после чего получим R.

Далее организуем перебор чисел N в цикле for. Для каждого полученного значения R проверяем, превышает ли оно 73 и является ли наименьшим среди полученных. Если условие выполняется, обновляем наименьшее значение R. После завершения цикла выводим минимальное R.

mn = 10 ** 10  # Инициализация переменной для хранения минимального результата > 73

for n in range(1, 10000):  # Перебираем числа N от 1 до 9999 включительно
    s = bin(n)[2:]  # Перевод в двоичную систему

    # Считаем количество единиц (сумму цифр) с помощью count,
    # находим остаток (% 2), дописываем в конец s
    s = s + str(s.count("1") % 2)
    s = s + str(s.count("1") % 2)  # Повторяем для обновлённой записи

    r = int(s, 2)  # Переводим в десятичную систему

    # Проверяем, что результат > 73, то есть подходит по условию,
    # и меньше текущего минимума
    if r > 73 and r < mn:
        mn = r
print(mn)

Ответ: 78

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

Задача 76#63636Максимум баллов за задание: 1

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

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

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

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

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

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

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

Решение программой
В условии задачи описан алгоритм, для поиска подходящего числа N необходимо «перевести» этот алгоритм с естественного языка на язык программирования Python. Сначала переводим число N в двоичную строку с помощью функции bin. Заметим, что сумма цифр двоичной записи совпадает с количеством единичек в ней, поэтому достаточно использовать count("1") для вычисления суммы цифр. Если это количество чётное, дописываем справа 00, используя конкатенацию строк (оператор +). Если нечётное, дописываем 11. Наконец, переводим полученный результат в десятичную систему счисления и получаем R.
Далее организуем перебор чисел N в цикле for. Для каждого полученного значения R проверяем, превышает ли оно 201. Если условие выполняется, выводим N и завершаем цикл, ведь нас интересует наименьшее N, а следующие значения N будут больше, так как цикл перебирает их по возрастанию.

for number in range(1, 1000):  # Перебираем числа N от 1 до 999 включительно
    binary_number = bin(number)[2:]  # Перевод в двоичную систему

    # Находим сумму цифр двоичной записи через количество единиц
    if binary_number.count("1") % 2 == 0:
        # Если сумма цифр чётна, дописываем 00, иначе - 11
        binary_number += "00"
    else:
        binary_number += "11"

    # Переводим полученное двоичное число в десятичную систему
    decimal_result = int(binary_number, 2)

    # Если полученное число больше 201
    if decimal_result > 201:
        # Выводим исходное число и прерываем цикл
        print(number)
        break

Ответ: 50

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

Задача 77#63824Максимум баллов за задание: 1

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

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

   2) Если N нечетное, то в конец полученной записи (справа) дописывается 0, в начало 1; если N четное в конец и начало дописывается по две единицы.

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

Укажите наибольшее число, меньшее 126, которое может являться результатом работы автомата Например, N = 1410  = 11102  . Число четное, следовательно, добавляем по две единицы по краям, получается 111110112 = 25110  .

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

Решение программой
В условии задачи описан алгоритм, для поиска подходящего числа R необходимо «перевести» этот алгоритм с естественного языка на язык программирования Python. Сначала переводим число N в двоичную строку с помощью функции bin. Затем дописываем в начало 1 и в конец 0, используя сложение (конкатенацию) строк, если N нечётное. Иначе дописываем 11 в начало и конец. Переводим полученный результат в десятичную систему счисления и получаем R.
Далее организуем перебор чисел N в цикле for. Для каждого полученного значения R проверяем, меньше ли оно 126 и является ли наибольшим среди полученных.. Если условие выполняется, обновляем наибольшее значение R. После завершения цикла выводим максимальное R.

mx = -10 ** 10  # Инициализация переменной для хранения максимально результата < 126

for n in range(1, 10000):  # Перебираем числа N от 1 до 9999 включительно
    s = bin(n)[2:]  # Перевод в двоичную систему
    if n % 2 != 0:
        # Если n - нечётно, дописываем 1 в начало и 0 в конец,
        # иначе - 11 в начало и конец
        s = ’1’ + s + ’0’
    else:
        s = ’11’ + s + ’11’

    # Переводим полученное двоичное число в десятичную систему
    r = int(s, 2)

    # Проверяем, что результат < 126, то есть подходит по условию, и больше максимального
    if r < 126 and r > mx:
        mx = r
print(mx)

Ответ: 123

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

Задача 78#63859Максимум баллов за задание: 1

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

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

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

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

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

Решение программой
В условии задачи описан алгоритм, для поиска подходящего числа N необходимо «перевести» этот алгоритм с естественного языка на язык программирования Python. Первым делом переводим число N в двоичную строку с помощью функции bin. Заметим, что сумма цифр двоичной записи совпадает с количеством единичек в ней, поэтому достаточно использовать count("1") для вычисления суммы цифр. Далее допишем остаток от деления суммы цифр на 2, используя конкатенацию строк. Повторим то же действие для обновлённой записи. Осталось перевести результат в десятичную систему счисления, после чего получим R.

Далее организуем перебор чисел N в цикле for. Для каждого полученного значения R проверяем, превышает ли оно 126. Если условие выполняется, выводим N и завершаем цикл, ведь нас интересует наименьшее N, а следующие значения N будут больше, так как цикл перебирает их по возрастанию.

for n in range(1, 10000):  # Перебираем числа N от 1 до 9999 включительно
    s = bin(n)[2:]  # Перевод в двоичную систему

    # Считаем количество единиц (сумму цифр) с помощью count,
    # находим остаток (% 2), дописываем в конец s
    s = s + str(s.count("1") % 2)
    s = s + str(s.count("1") % 2)  # Повторяем для обновлённой записи

    r = int(s, 2)  # Переводим в десятичную систему

    if int(s, 2) > 126:  # Получаем R
        # Первое выведенное N будет минимальным
        print(n)  # Выводим N
        break  # Завершаем цикл

Ответ: 32

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

Задача 79#63860Максимум баллов за задание: 1

На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число следующим образом.
1. Строится двоичная запись числа N.
2. К этой записи дописываются справа ещё два разряда по следующему правилу: если N чётное, в конец числа (справа) дописываются две цифры: сначала 0, потом 1, в противном случае справа дописываются две единицы.

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

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

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

Решение программой
В условии задачи описан алгоритм, для поиска подходящего числа N необходимо «перевести» этот алгоритм с естественного языка на язык программирования Python. Первым делом переводим число N в двоичную строку с помощью функции bin. Затем дописываем 01, если N является чётным, иначе – 11 . Осталось перевести результат в десятичную систему счисления, после чего получим R.
Далее организуем перебор чисел N в цикле for. Для каждого полученного значения R проверяем, превышает ли оно 206. Если условие выполняется, выводим N и завершаем цикл, ведь нас интересует наименьшее N, а следующие значения N будут больше, так как цикл перебирает их по возрастанию.

for n in range(1, 10000):  # Перебираем числа N от 1 до 9999 включительно
    s = bin(n)[2:]  # Перевод в двоичную систему
    if n % 2 == 0:
        # Если n - чётно, дописываем 01, иначе 11
        s += "01"
    else:
        s += "11"

    if int(s, 2) > 206:  # Получаем R
        # Первое выведенное N будет минимальным
        print(n)  # Выводим N
        break  # Завершаем цикл

Ответ: 51

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

Задача 80#63861Максимум баллов за задание: 1

На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число следующим образом.
1. Строится двоичная запись числа N.
2. Последняя цифра (самая правая) двоичной записи удаляется.
3. Если исходное число N было нечётным, в конец записи (справа) дописываются цифры 10, если четным — 01.
4. Результат переводится в десятичную систему и выводится на экран.

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

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

Решение программой
В условии задачи описан алгоритм, для поиска подходящего числа N необходимо «перевести» этот алгоритм с естественного языка на язык программирования Python. Первым делом переводим число N в двоичную строку с помощью функции bin. Затем удаляем последнюю цифру, используя срез. Далее дописываем 01, если N является чётным, иначе – 10 . Осталось перевести результат в десятичную систему счисления, после чего получим R.
Далее организуем перебор чисел N в цикле for. Для каждого полученного значения R проверяем, равно ли оно 769. Если условие выполняется, выводим N, что и будет ответом.

for n in range(1, 10000):  # Перебираем числа N от 1 до 9999 включительно
    s = bin(n)[2:]  # Перевод в двоичную систему
    s = s[:-1]
    if n % 2 == 0:
        # Если n - чётно, дописываем 01, иначе 10
        s += "01"
    else:
        s += "10"

    if int(s, 2) == 769:  # Получаем R
        print(n)  # Выводим N

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