25.04.2025

5_3176_не эффективно

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

def nine(n):
    s=""
    while(n>0):
        o=n%9
        n=n//9
        s+=str(o)
    return s[::-1]

def maxCount(s):
    m1=[]
    k0 = s.count("0")
    k1 = s.count("1")
    k2 = s.count("2")
    k3 = s.count("3")
    k4 = s.count("4")
    k5 = s.count("5")
    k6 = s.count("6")
    k7 = s.count("7")
    k8 = s.count("8")
    tempmax = max(k0,k1,k2,k3,k4,k5,k6,k7,k8)
    mas=[]
    if k0 == tempmax: mas.append(0)
    if k1 == tempmax: mas.append(1)
    if k2 == tempmax: mas.append(2)
    if k3 == tempmax: mas.append(3)
    if k4 == tempmax: mas.append(4)
    if k5 == tempmax: mas.append(5)
    if k6 == tempmax: mas.append(6)
    if k7 == tempmax: mas.append(7)
    if k8 == tempmax: mas.append(8)
    return str(max(mas))

for n in range(1,10000):
    N=nine(n)
    # print(N)
    for i in range(5):
        k5=N.count("5")
        k7=N.count("7")
        if k5==k7:
            N+=N[-1]
        else:
            N+=maxCount(N)
        # print(N)
    rezult=hex(int(N,9))[2::]
    # print(n,rezult)
    if rezult.count("bac")!=0:
        print(n,rezult)