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

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

Задача 1#56306

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

  1. Строится двоичная запись числа N.
  2. К этой записи дописываются ещё несколько разрядов по следующему правилу: если N чётное, то к нему справа дописывается 01  , если N нечетное – слева дописывается 11  и справа 0  ;
  3. Результат переводится в десятичную систему и выводится на экран.

Пример. Дано число N = 13  . Алгоритм работает следующим образом:

  1. Двоичная запись числа N: 1101  .
  2. Число нечетное, следовательно слева дописываем 11  , справа 0  → 1111010  .
  3. На экран выводится число 122  .

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

Показать ответ и решение
for i in range(1, 10000):
    if i % 2 == 0:
        i1 = bin(i)[2:] + ’01’
    else:
        i1 = ’11’ + bin(i)[2:] + ’0’
    if int(i1, 2) > 1021:
        print(i)
        break

 

Ответ: 127

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

Задача 2#53275

У исполнителя Составь_план_подготовки_в_закрытой_группе есть 2  команды:

1. Прибавить 2

2. Умножить на 2

Какое число будет выведено в результате работы программы 212122  при исходном числе 6  ?

 

(план подготовки и правда нужно составить, если еще не сделал этого)

Показать ответ и решение
def f(x, code):
    if code == ’1’:
        return x + 2
    if code == ’2’:
        return x * 2
n = 6
for c in ’212122’:
    n = f(n, c)
print(n)

Ответ: 120

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

Задача 3#33499

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

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

2) Эта запись изменяется по следующим правилам:

Если сумма цифр в двоичной записи числа четная, то справа дописывается 0  , а первые два левых разряда заменяются на 10  ;

Если сумма цифр в двоичной записи числа нечетная, то справа дописывается 1  , а первые два левых разряда заменяются на 11  ;

Например, запись 11100  преобразуется в 111001  .

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

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

Показать ответ и решение
for i in range(2, 24):
    x = bin(i)[2:]
    if x.count("1") % 2 == 0:
        x = "10" + x[2:] + "0"
    else:
        x = "11" + x[2:] + "1"
    if int(x, 2) < 24:
        print(i)

Ответ: 15

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

Задача 4#30303

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

1) Строится шестнадцатеричная запись числа N∕∕2  , где «∕∕  » — операция деления нацело.

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

  а) если N  не делится на 4, то слева к нему приписывается «F  », а справа «A0  ».

  б) в противном случае слева приписывается «15  », а справа «C  ».

Например, N = 410 ⇒ 216 ⇒ 152C16 = 542010 = R  .

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

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

Показать ответ и решение
def f_16(n):  
    x = n  
    s = ’’  
    while x > 0:  
        h = x % 16  
        if h > 9:  
            s = chr(55 + h) + s  # По табличке ASCII  
        else:  
            s = str(h) + s  
        x //= 16  
    return s  
for i in range(1000000, 0, -1):  
    s = f_16(i // 2)  
    if i % 4 != 0: s = ’F’ + s + ’A0’  
    else: s = ’15’ + s + ’C’  
    if int(s, 16) < 1048576:  
        print(i)  
        break

Ответ: 511

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

Задача 5#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

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

Задача 6#30301

Автомат получает на вход натуральное число X  . По этому числу строится трёхзначное число Y  по следующим правилам:

  1. Первая цифра числа Y  (разряд сотен) — остаток от деления X  на 2  .
  2. Вторая цифра числа Y  (разряд десятков) — остаток от деления X  на 3  .
  3. Третья цифра числа Y  (разряд единиц) — остаток от деления X  на 5  .

Пример. Исходное число: 55  . Остаток от деления на 2  равен 1  ; остаток от деления на 3  равен 1  ; остаток от деления на 5  равен 0  . Результат работы автомата: 110  .

Сколько существует двузначных чисел, при обработке которого автомат выдаёт результат 100  ?

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

Можно изначально подумать, что это нечетное число, которое делится на 3  и 5  . Получается нужно 15  умножить на нечетные числа, и чтобы были двоичные числа. Эти числа выходят в итоге 15,45,75  .

ans = 0
for i in range(10, 100):
    y = ’’
    y += str(i % 2) + str(i % 3) + str(i % 5)
    if y == ’100’:
        ans += 1
print(ans)

Ответ: 3

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

Задача 7#30300

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

  1. Строится двоичная запись числа N  .
  2. Подсчитывается количество нулей и единиц в полученной записи. Если их количество одинаково, в конец записи добавляется её последняя цифра. В противном случае в конец записи добавляется цифра, которая встречается реже.
  3. Шаг 2  повторяется еще два раза.
  4. Результат переводится в десятичную систему счисления.

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

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

Решение 1

for i in range(1023, 1, -1):
    s = bin(i)[2:] # Внизу отказ от ИВ
    s += s[-1] * (s.count(’0’) == s.count(’1’)) + \
    ’1’ * (s.count(’1’) < s.count(’0’)) + ’0’ * (s.count(’0’) < s.count(’1’))
    s += s[-1] * (s.count(’0’) == s.count(’1’)) + \
    ’1’ * (s.count(’1’) < s.count(’0’)) + ’0’ * (s.count(’0’) < s.count(’1’))
    s += s[-1] * (s.count(’0’) == s.count(’1’)) + \
    ’1’ * (s.count(’1’) < s.count(’0’)) + ’0’ * (s.count(’0’) < s.count(’1’))
    if int(s, 2) % 2 != 0 and int(s, 2) % 7 == 0:
        print(i)
        break

Решение 2

for i in range(1023, 1, -1):
    s = bin(i)[2:]
    for j in range(3):
        k = s.count(’1’) - s.count(’0’)
        if (k < 0):
            s += ’1’
        elif (k > 0):
            s += ’0’
        else:
            s += s[-1]
    if int(s, 2) % 2 != 0 and int(s, 2) % 7 == 0:
        print(i)
        break

Ответ: 914

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

Задача 8#30299

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

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

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

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

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

Пример. Дано число N = 13  . Алгоритм работает следующим образом:

1. Двоичная запись числа N  : 1101  .

2. Сумма цифр двоичной записи 3  , остаток от деления на 2  равен 1  , новая запись 11011  .

3. Сумма цифр полученной записи 4  , остаток от деления на 2  равен 0  , новая запись 110110  .

4. На экран выводится число 54  .

Какое наименьшее число, большее вашего балла на ЕГЭ (100  ), может появится на экране в результате работы автомата?

Показать ответ и решение
for i in range(1000000):
    s = bin(i)[2::]
    s += str(s.count(’1’) % 2)
    s += str(s.count(’1’) % 2)
    if int(s, 2) > 100:
        print(int(s, 2))
        break

Аналитическое решение:

Имеется число N  . Все числа в двоичной записи складываются и добавляется остаток от деления на 2 этой суммы, то есть цифра 0 или 1, значит если сумма чётна, то дописываем 0, иначе 1. Если мы дописали единичку, то количество единиц увеличится на 1, а значит, что после этого сумма будет чётна, и уже в следующем пункте мы допишем нолик. Если мы дописали ноль, то сумма числа не меняется, а значит в следующем пункте мы также допишем нолик. Значит число в 2 СС заканчивается на 00 или 10.

Нам необходимо найти число, большее, чем 100, которое в 2 СС заканчивается на 00 или 10. Будем перебирать с минимального.

Подойдет ли число 10110 = 11001012  ? Нет, оно кончается на 01.

Подойдет ли число 10210 = 11001102  ? Да, так как оно заканчивается на 10. Значит это и есть наш ответ.

Ответ: 102

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

Задача 9#30298

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

  1. Строится двоичная запись числа N  .
  2. Складываются все цифры полученной двоичной записи. В конец записи (справа) дописывается остаток от деления суммы на 2  .
  3. Предыдущий пункт повторяется для записи с добавленной цифрой.
  4. Результат переводится в десятичную систему и выводится на экран.

Пример. Дано число N = 13  . Алгоритм работает следующим образом:

  1. Двоичная запись числа N : 1101  .
  2. Сумма цифр двоичной записи 3  , остаток от деления на 2  равен 1  , новая запись 11011  .
  3. Сумма цифр полученной записи 4  , остаток от деления на 2  равен 0  , новая запись 110110  .
  4. На экран выводится число 54  .

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

Показать ответ и решение
for i in range(1000000):
    s = bin(i)[2:]
    s += str(s.count(’1’) % 2)
    s += str(s.count(’1’) % 2)
    if int(s, 2) > 1024:
        print(int(s, 2))
        break

Ответ: 1026

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

Задача 10#30297

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

  1. Строится двоичная запись числа N  .
  2. Складываются все цифры полученной двоичной записи. В конец записи (справа) дописывается остаток от деления суммы цифр на 2  .
  3. Предыдущий пункт повторяется для записи с добавленной цифрой.
  4. Результат переводится в десятичную систему и выводится на экран.

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

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

Показать ответ и решение
for i in range(1000000):  
    s = bin(i)[2::]  
    s += str(s.count(’1’) % 2)  
    s += str(s.count(’1’) % 2)  
    if int(s, 2) > 50:  
        print(int(s, 2))  
        break

Ответ: 54

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

Задача 11#30296

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

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

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

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

Показать ответ и решение
for i in range(1, 1000000):
    s = bin(i)[2:]
    s += str(s.count(’1’) % 2)
    s += str(s.count(’1’) % 2)
    if int(s, 2) > 166:
        print(int(s, 2))
        break

Ответ: 170

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

Задача 12#30295

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

  1. Строится двоичная запись числа N  .
  2. В конец записи (справа) дописывается конъюнкция двух правых крайних цифр двоичной записи числа N  .
  3. В конец записи (справа) дописывается конъюнкция двух левых крайних цифр двоичной записи числа N  .
  4. Результат переводится в десятичную систему.

Пример. Дано число N = 23  . Алгоритм работает следующим образом:

  1. Двоичная запись числа N : 10111  .
  2. Конъюнкция двух правых крайних цифр 1  , новая запись 101111  .
  3. Конъюнкция двух левых крайних цифр 0  , новая запись 1011110  .
  4. Результат работы алгоритма R = 94  .

При каком наименьшем числе N  в результате работы алгоритма получится R > 55  ? В ответе запишите это число в десятичной системе счисления.

Показать ответ и решение
for i in range(2, 10000):
    s = bin(i)[2:]
    s += str(int(s[-2]) & int(s[-1]))
    s += str(int(s[0]) & int(s[1]))
    if int(s, 2) > 55:
        print(i)
        break

Ответ: 14

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

Задача 13#30294

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

  1. Строится двоичная запись числа N  .
  2. В этой записи последний встречаемый ноль заменяется на первые две цифры полученной записи. Если нуля нет в записи числа, алгоритм аварийно завершается.
  3. Запись записывается справа налево (в обратную сторону).
  4. Результат переводится в десятичную систему счисления.

Для скольких значений N  в результате работы алгоритма получится число 255  ?

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

Решение 1

ans = 0
for i in range(2, 10000):
    s = bin(i)[2:]
    if s.count(’0’) > 0:
        ind = ’’
        for j in range(len(s) - 1, -1, -1):
            if s[j] == ’0’:
                ind = j
                break
        x = s[:ind] + s[0] + s[1] + s[ind + 1:]
        x = x[::-1]
        if int(x, 2) == 255:
            ans += 1
print(ans)

Решение 2

ans = 0
for i in range(2, 10000):
    s = bin(i)[2:]
    if s.count(’0’) > 0:
        s = s[::-1].replace(’0’, s[0:2][::-1], 1)
        if int(s, 2) == 255:
            ans += 1
print(ans)

Ответ: 5

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

Задача 14#30293

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

  1. Строится восьмибитная двоичная запись числа N  .
  2. Удаляется последняя цифра двоичной записи.
  3. Запись «переворачивается», то есть читается справа налево.
  4. Полученное число переводится в десятичную запись и выводится на экран.

Каково наименьшее число, меньшее 100  , которое после обработки автоматом не изменится?

Показать ответ и решение
for i in range(1, 100):
    s = ’0’ * (8 - len(bin(i)[2:])) + bin(i)[2:]
    s = s[:len(s) - 1]
    s = s[::-1]
    if int(s, 2) == i:
        print(i)
        break

Ответ: 24

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

Задача 15#30292

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

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

2) Инвертируются разряды исходного числа (0 заменяется на 1, 1 на 0).

3) К полученному двоичному числу прибавляют единицу.

4) Полученное число переводится в десятичную систему счисления.

Для какого числа N результат работы алгоритма равен 130?

Показать ответ и решение
for i in range(1, 128):
    s = ’0’ * (8 - len(bin(i)[2::])) + bin(i)[2::]
    x = ’’
    for j in range(len(s)):
        if s[j] == ’1’:
            x += ’0’
        else:
            x += ’1’
    if (int(x, 2) + 1) == 130:
        print(i)

Аналитическое решение:

Необходимо найти такое N  , что после работы алгоритма мы получим 130. Давайте размотаем алгоритм с конца: в конце алгоритм добавляет единицу, а значит отнимём её и получим число 12910  . В 2 СС это число выглядит так 100000012  . Инвертируем биты обратно, получим число 011111102  , ведущий ноль не отбрасываем, так как алгоритм строил восьмибитную(то есть состояющую из 8 цифр в двоичной СС) запись. Значит изначальное число равнялось 011111102 = 12610  .

Ответ: 126

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

Задача 16#30291

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

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

2) Запись «переворачивается», то есть читается справа налево. Если при этом появляются ведущие нули, они отбрасываются.

3) Полученное число переводится в десятичную запись и выводится на экран. Какое наименьшее число, превышающее 765, после обработки автоматом даёт результат 23?

Показать ответ и решение
for i in range(766, 10000000):  
    s = bin(i)[2::]  
    s = str(int(s[::-1]))  
    if int(s, 2) == 23:  
        print(i)  
        break

Ответ: 928

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

Задача 17#30290

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

  1. Строится двоичная запись числа N  .
  2. К этой записи дописывается (дублируется) последняя цифра.
  3. Затем справа дописывается 0  , если в двоичном коде числа N  чётное число единиц, и 1  , если нечётное.
  4. К полученному результату справа дописывается 1  , если количество единиц получившегося числа нечётно, иначе дописывается 0  .

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

Показать ответ и решение
for n in range(1, 1000):
    r = bin(n)[2:]
    r += r[-1]
    if bin(n)[2:].count(’1’) % 2 == 0:
        r += ’0’
    else:
        r += ’1’
    if r.count(’1’) % 2 == 0:
        r += ’0’
    else:
        r += ’1’
    if int(r, 2) > 120:
        print(n)
        break

Ответ: 15

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

Задача 18#30289

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

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

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

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

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

for i in range(1, 1000000):
    s = bin(i)[2::]
    s += ’1’
    if s.count(’1’) % 2 == 0:
        s += ’0’
    else:
        s += ’1’
    # второй if не нужен, потому что всегда будет дописываться 0
    # подумайте почему)
    if s.count(’1’) % 2 == 0:
        s += ’0’
    else:
        s += ’1’
    if int(s, 2) > 212:
        print(int(s, 2))
        break

Аналитическое решение:

Каким бы не было число, на втором шаге к нему всегда дописывается единица, так что давайте называть это число «изначальным».

Если изначальное число N  имеет чётное количество единиц, то после добавления нуля количество единиц не изменится, а потому на следующем шаге также добавится ноль. Итого к числу допишут два нуля.

Если изначально число N  имеет нечётное количество единиц, то после добавления единицы количество единиц увеличится на 1  , что означает, что количество единиц станет чётным числом, а значит на следующем шаге уже будут добавлять ноль. Итого к числу допишут единицу и ноль.

Значит мы будем проверять только числа, которые кончаются на 100  или 110  .

Могло ли получиться число 213  ? Нет, в двоичной СС оно выглядит как 110101012  , а значит получиться после алгоритма не могло.

Могло ли получиться число 214  ? В двоичной СС оно выглядит как 11010110
        2  . Так что вполне возможно. Если откинем последние три цифры, то у нас останется число 110102  , добавим к нему единицу и получим число 1101012  , у него чётное число единиц, а значит после работы алгоритма к нему дописали бы два нуля, но мы откинули 110  , а значит это не то число, которое нам нужно.

Могло ли получиться число 215  ? Нет, в двоичной СС оно выглядит как 110101112  , а значит получиться после алгоритма не могло.

Могло ли получиться число 216  ? Нет, в двоичной СС оно выглядит как 110110002  , а значит получиться после алгоритма не могло.

Могло ли получиться число 217  ? Нет, в двоичной СС оно выглядит как 110110012  , а значит получиться после алгоритма не могло.

Могло ли получиться число 218  ? Нет, в двоичной СС оно выглядит как 110110102  , а значит получиться после алгоритма не могло.

Могло ли получиться число 219  ? Нет, в двоичной СС оно выглядит как 110110112  , а значит получиться после алгоритма не могло.

Могло ли получиться число 220  ? В двоичной СС оно выглядит как 110111002  . Так что вполне возможно. Если откинем последние три цифры, то у нас останется число 110112  , добавим к нему единицу и получим число 1101112  , у него нечётное число единиц, а значит после работы алгоритма к нему дописали бы единицу и ноль, но мы откинули    100  , а значит это не то число, которое нам нужно.

Могло ли получиться число 221  ? Нет, в двоичной СС оно выглядит как 110111012  , а значит получиться после алгоритма не могло.

Могло ли получиться число 222  ? В двоичной СС оно выглядит как 110111102  . Так что вполне возможно. Если откинем последние три цифры, то у нас останется число 110112  , добавим к нему единицу и получим число 1101112  , у него нечётное число единиц, а значит после работы алгоритма к нему дописали бы единицу и ноль, а мы откинули как раз 110  , значит 222  – это интересующее нас число.

Ответ: 222

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

Задача 19#30288

Автомат получает на вход пятизначное число. По этому числу строится новое число по таким правилам:

  1. Складываются квадраты цифр, стоящих на нечетных позициях;
  2. Складываются квадраты цифр, стоящих на четных позициях;
  3. Затем в порядке возрастания записываются эти суммы.

Укажите наибольшее число, при вводе которого автомат выдает число 61100  .

Пример. Дано число 12345.  Алгоритм работает следующим образом:

  1. 11 + 32 + 52 = 35  ;
  2.  2   2
2 + 4 = 20  ;
  3. Полученное число — 2035  .
Показать ответ и решение

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

for i in reversed(range(10 ** 4, 10 ** 5)):
    s = str(i)
    odd = 0
    even = 0
    for j in range(len(s)):
        if (j + 1) % 2 == 1:
            odd += int(s[j]) ** 2
        else:
            even += int(s[j]) ** 2
    if str(min(odd, even)) + str(max(odd, even)) == ’61100’:
        print(i)
        break

Ответ: 86650

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

Задача 20#30287

Автомат получает на вход пятизначное число. По этому числу строится новое число по следующим правилам.

  1. Складываются первая и вторая, третья и четвертая, а также первая и пятая цифры исходного числа.
  2. Из полученных трех чисел удаляется максимальное.
  3. Оставшиеся два числа записываются друг за другом в порядке неубывания (без разделителей).

Пример. Исходное число: 12345  . Суммы: 1+ 2 = 3;3 +4 = 7;1+ 5 = 6  . Максимальное: 7  , тогда результат: 36  . Укажите наибольшее число, в результате обработки которого автомат выдаст число 311  .

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

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

for i in reversed(range(10 ** 4, 10 ** 5)):
    s = str(i)
    x01 = int(s[0]) + int(s[1])
    x23 = int(s[2]) + int(s[3])
    x04 = int(s[0]) + int(s[4])
    minim = min(x01, x23, x04)
    sr = sum([x01, x23, x04]) - minim - max(x01, x23, x04)
    if str(minim) + str(sr) == ’311’:
        print(i)
        break

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