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

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

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

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

count = 0
for i in range(1, 10000):
    n = i
    if n % 3 == 0:
        n = n // 3
    else:
        n -= 1
    if n % 5 == 0:
        n = n // 5
    else:
        n -= 1
    if n % 11 == 0:
        n = n // 11
    else:
        n -= 1
    if n == 8:
        count +=1
print(count)

Ответ: 4


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

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

for n in range(80,83):
    r = bin(n)[2:]
    a = r.count('0')
    b = r.count('1')
    for i in range(3):
        if a > b:
            r = r + '1'
        if a < b:
            r = r + '0'
        if a == b:
            r = r + r[-1]
        a = r.count('0')
        b = r.count('1')
    R = int(r,2)
    if R %2 == 0 and R % 4 != 0:
        print(n,R)
        break

Ответ: 81


На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится троичная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
а) если число N делится на 3, то к этой записи дописываются две первые троичные цифры;
б) если число N на 3 не делится, то остаток от деления умножается на 5, переводится в троичную запись и дописывается в конец числа.Полученная таким образом запись является троичной записью искомого числа R.
3. Результат переводится в десятичную систему и выводится на экран.

Например, для исходного числа 11 результатом является число 307, а для исходного числа 12 это число 112.
Укажите минимальное число R, большее 64, которое может быть получено с помощью описанного алгоритма. В ответе запишите это число в десятичной системе счисления.

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

res = []
for i in range(1,50):
    
    N=i
    c=''
    while N > 0:
        c = c + str(N%3)
        N = N//3
    c= c[::-1]
    if i%3 == 0:
        c = c + c[:2]
    else:
        s = (i % 3)* 5
        k = ''
        while s > 0:
            k = k + str(s%3)
            s = s//3
        k= k[::-1]
        c = c + str(k)
    R = int(c,3)
    if R > 64:
        if R not in res:
            res.append(R)
res.sort()
print(res[0])

Ответ: 68


На вход алгоритма подаётся трёхзначное десятичное число N, запись которого в двадцатичной системе счисления содержит ровно одну цифру G. Алгоритм строит по нему новое число R следующим образом:
Если вторая цифра числа N чётная, то число N увеличивается в 2 раза.
Если вторая цифра числа N нечётная, то число N уменьшается в 2 раза.
Полученное число является десятичной записью числа R.
Например, число 336, после преобразования, становится числом 168, а число 416 числом 208.
Определите количество таких N, число R для которых трёхзначное, сумма цифр которого является простым числом

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

count = 0
for i in range(200,1000):
    N = i
    xz = i // 10 % 10
    if xz % 2 == 0:
        R = N * 2
    else:
        R = N / 2
    if (N // 20 % 20 == 16 and N % 20 != 16) or (N % 20 == 16 and N // 20 % 20 != 16):
        summ = R % 10 + R % 100 // 10 + R // 100
        if (R < 1000 ) and (summ == 11 or summ == 13 or summ == 17 or summ == 19 or summ == 23):
            count += 1
print(count)

Ответ: 18