В конце статьи есть тестирование

В конце статьи есть тестирование по этой теме

Счетчик просмотров68

5 НОМЕР - Решение задач (3/3)

Оглавление
Условие задачиАлгоритм решенияРешение
Задача

Условие задачи

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

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

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

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

б) если число N на 3 не делится, то остаток от деления умножается на 5, переводится в троичную запись и дописывается в конец числа.

Пример: для числа 11 = 102₃ результат — 102101₃ = 307; для числа 12 = 110₃ результат — 11010₃ = 111.

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

Баннер статьи

Алгоритм решения

1. Перебор чисел: Создать цикл for N in range(1, 10000): (диапазон обычно небольшой, можно увеличить при необходимости).

2. Перевод в систему счисления (СС): В нашем случае нужна троичная система счисления. Для неё нет встроенной функции в Python (bin — двоичная, oct — восьмеричная, hex — шестнадцатеричная). Поэтому пишем свою функцию перевода через деление с остатком:

PYTHON-КОД
1
2
3
4
5
6

3. Обработка: Проверяем, делится ли N на 3. Если делится — дописываем две последние цифры троичной записи. Если не делится — считаем остаток, умножаем на 5, переводим в троичную и дописываем.

Для получения двух последних цифр строки используем срез s[-2:] — он берёт символы с предпоследнего до конца строки. Соответственно проверка будет выглядеть следующим образом:

PYTHON-КОД
1
2

Если N не делится на 3, то остаток от деления N % 3 равен 1 или 2. Умножаем его на 5 и переводим результат в троичную запись той же функцией:

PYTHON-КОД
1
2
3

Например, если остаток = 2, то 2 × 5 = 10, а 10 в троичной — это '101'. Эта строка дописывается в конец.

4. Обратный перевод: Переводим итоговую троичную строку обратно в десятичную систему: R = int(s, 3).

5. Условие и вывод: Проверяем условие if R > 150 и добавляем подходящие R в список. В конце выводим min(results), так как ищем минимальное R.

Решение

PYTHON-КОД
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

Ответ: 162

Решите задачи, чтобы усвоить материал

Решить в Личном Кабинете
Анализ алгоритмов → Другие системы счисления

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

  1. Строится восьмеричная запись числа N.
  2. Далее эта запись обрабатывается по правилу:

а) если количество цифр восьмеричной записи делится на 3, то слева и справа приписывается 123
б) если количество цифр восьмеричной записи не делится на 3, то:

  • слева приписывается 77,
  • остаток от деления количество цифр на 3 переводится в 8 систему счисления и приписывается справа
  1. Полученная запись является десятичной записью числа R

Укажите минимальное число R, которое превышает 10 000 000 и может быть результатом работы этого алгоритма, если известно, что N>482
В ответе запишите число R.

Анализ алгоритмов → Другие системы счисления

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

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

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

Оцените статью

Другие статьи по предмету

Другие статьи не найдены