Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Пожалуйста, Срочно питон!!

nn Ученик (50), на голосовании 1 год назад
На вход алгоритма подается натуральное число N. Алгоритм строит по нему новое число в следующим образом:

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

2. Далее эта запись обрабатывается по следующему правилу:

а) если число и чётное, тогда в конец дописывается два младших разряда полученной троичной записи,

б) если число и нечетное, тогда в конец дописывается троичное представление суммы цифр полученной троичной записи.

Полученная таким образом запись является троичной записью искомого числа К.

Например, для исходного числа 1010 1013 результатом является число 101013-9110. а для числа 1110=1023 результатом является число 102103 = 10210. Укажите N, большее 9, после обработки которого с помощью этого алгоритма получается минимальное число К. В ответе запишите это число в десятичной системе счисления
Голосование за лучший ответ
Давид Мейстер Мастер (2088) 1 год назад
 def to_ternary(n): 
# Функция для перевода числа из десятичной системы в троичную
digits = []
while n > 0:
digits.append(str(n % 3))
n //= 3
return int(''.join(digits[::-1]))

def process_number(n):
ternary = to_ternary(n) # Переводим число в троичную систему
if n % 2 == 0:
return int(str(ternary) + str(ternary)[-2:]) # Добавляем два младших разряда
else:
return to_ternary(ternary + sum(int(digit) for digit in str(ternary))) # Добавляем троичное представление суммы цифр

min_k = float('inf')
result_n = None
for number in range(10, 100): # Проверяем числа от 10 до 99
k = process_number(number)
if k < min_k:
min_k = k
result_n = number

print(result_n) # Выводим число N, при котором получается минимальное значение K
Похожие вопросы