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=[]
    for i in range(9):
        m1.append(s.count(str(i)))

    tempmax = max(m1)
    mas=[]
    for i in range(len(m1)):
        if m1[i] == tempmax: 
            mas.append(i)

    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)