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

5.04 Прочие прототипы

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

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

Задача 1#30302

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

  1. Если исходное число кратно 3  , оно делится на 3  , иначе из него вычитается 1  .
  2. Если полученное на предыдущем шаге число кратно 5  , оно делится на 5  , иначе из него вычитается 1  .
  3. Если полученное на предыдущем шаге число кратно 11  , оно делится на 11  , иначе из него вычитается 1  .
  4. Число, полученное на шаге 3  , считается результатом работы алгоритма.

Сколько существует различных натуральных чисел N  , при обработке которых получится R = 2  ?

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

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

В этой задаче нам необходимо определить, сколько различных натуральных чисел N при обработке алгоритмом дают результат R = 2. Для этого мы сначала «переводим» пошаговое описание алгоритма с естественного языка на язык Python. Мы начинаем с цикла for, перебирающего все числа от 2 до некоторого верхнего предела (например, 100000) — это гарантирует, что мы рассмотрим все возможные варианты N, больше 1. Внутри цикла текущее число сохраняем в переменную s, с которой будем работать. На первом шаге проверяем, делится ли число на 3, используя оператор s

Далее аналогично обрабатываем проверку делимости на 5. Если текущее число кратно 5, делим его на 5 (s //= 5), иначе уменьшаем на 1 (s -= 1). После этого проверяем делимость на 11: если число делится на 11, выполняем деление на 11 (s //= 11), иначе снова вычитаем 1 (s -= 1). После этих трёх последовательных шагов мы получаем число, которое алгоритм считает результатом работы, и сохраняем его в переменной s. На последнем этапе проверяем, равно ли это число 2 (if s == 2). Если условие выполняется, мы увеличиваем счётчик ans на 1, чтобы учитывать найденное число N. После завершения перебора выводим значение счётчика, что и даст количество всех натуральных чисел N, для которых алгоритм даёт R = 2.

# Инициализация счётчика найденных чисел N
ans = 0

# Перебор всех натуральных чисел N, начиная с 2 (так как N > 1)
for i in range(2, 100000):
    # Копируем текущее число в переменную s для обработки
    s = i

    # Шаг 1: проверяем, делится ли s на 3
    if s % 3 == 0:
        # Если делится, делим s на 3
        s //= 3
    else:
        # Если не делится, вычитаем 1
        s -= 1

    # Шаг 2: проверяем, делится ли текущее s на 5
    if s % 5 == 0:
        # Если делится, делим на 5
        s //= 5
    else:
        # Если не делится, вычитаем 1
        s -= 1

    # Шаг 3: проверяем, делится ли текущее s на 11
    if s % 11 == 0:
        # Если делится, делим на 11
        s //= 11
    else:
        # Если не делится, вычитаем 1
        s -= 1

    # Проверка: если полученное число равно 2, увеличиваем счётчик
    if s == 2:
        ans += 1

# Выводим общее количество чисел N, для которых алгоритм даёт R = 2
print(ans)
                                                                                                     
                                                                                                     

Ответ: 6

Специальные программы

Все специальные программы

Программа
лояльности v2.0

Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!

Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение

Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты

Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей

Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ

Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!

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