Тема 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  ?

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

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

ans = 0
for i in range(2, 100000):
    s = i
    if s % 3 == 0: s //= 3
    else: s -= 1
    if s % 5 == 0: s //= 5
    else: s -= 1
    if s % 11 == 0: s //= 11
    else: s -= 1
    if s == 2: ans += 1
print(ans)

Ответ: 6

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

Задача 2#57742

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

Чему равно количество чисел N в отрезке [300,700], в результате обработки которых на экране появится число 10?

Показать ответ и решение
c = 0
for n in range(300, 701):
    s = str(n)
    mn = 10**10
    mx = -10**9
    for i in range(len(s)):
        for j in range(i+1, len(s)):
            if s[i] != ’0’:
                mx = max(int(s[i]+s[j]), mx)
                mn = min(int(s[i]+s[j]), mn)
            if s[j] != ’0’:
                mx = max(int(s[j]+s[i]), mx)
                mn = min(int(s[j]+s[i]), mn)
    if mx-mn == 10:
        c += 1
print(c)

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