Задача 5

Десятичное преобразование

Ссылка на задачу: https://inf-ege.sdamgia.ru/problem?id=11262

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

1.  Складываются отдельно первая и вторая цифры, вторая и третья цифры, а также третья и четвёртая цифры.

2.  Из полученных трёх чисел выбираются два наибольших и записываются друг за другом в порядке неубывания без разделителей.

Пример. Исходное число: 9575. Суммы: 9 + 5 = 14; 5 + 7 = 12; 7 + 5 = 12. Наибольшие суммы: 14, 12. Результат: 1214.

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


for i in range(1000,10000):
    s = str(i)

    s1 = int(s[0]) + int(s[1])
    s2 = int(s[1]) + int(s[2])
    s3 = int(s[2]) + int(s[3])

    a = [s1,s2,s3]
    sorted(a)

    s_new = str(a[1]) + str(a[2])
    if s_new == '1517':
        print(i)

Ответ 1698

Двоичное преобразование

Ссылка на задачу: https://inf-ege.sdamgia.ru/problem?id=18708

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

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

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

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

б)  над этой записью производятся те же действия  — справа дописывается остаток от деления суммы цифр на 2.

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

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


for i in range(1,100):
    a = bin(i)[2:]
    s = str(a)

    k = 0
    for s1 in s:
        k = k + int(s1)        
    s1 = str(k%2)
    s = s + s1
        
    k = 0
    for s1 in s:
        k = k + int(s1)        
    s1 = str(k%2)
    s = s + s1

    r = int(s,2)

    if r > 85:
        print(i)

Ответ
21