5.04 Прочие прототипы
Ошибка.
Попробуйте повторить позже
Алгоритм получает на вход натуральное число и строит по нему новое число
следующим образом:
- Если исходное число кратно
, оно делится на
, иначе из него вычитается
.
- Если полученное на предыдущем шаге число кратно
, оно делится на
, иначе из него вычитается
.
- Если полученное на предыдущем шаге число кратно
, оно делится на
, иначе из него вычитается
.
- Число, полученное на шаге
, считается результатом работы алгоритма.
Сколько существует различных натуральных чисел , при обработке которых получится
?
Решение программой:
В этой задаче нам необходимо определить, сколько различных натуральных чисел 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)
Специальные программы

Программа
лояльности v2.0
Приглашай друзей в Школково и получай вознаграждение до 10%!

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

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

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

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

Вернём деньги за курс
за твою сотку на ЕГЭ
Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!