Напишите короткий код на Python до 4-5 строк(знаю, что можно такой код написать, а не расписывать на 11 строк) по заданию:
Укажите наименьшее основание системы счисления, в которой запись числа 50 трехзначна. #Желательно, с пояснениями в виде комментариев в программе
Ответы
предисловие:
Перевод 50 в меньшую систему счисления будет выполняться как последовательное деление числа на основание системы счисления и расположение остатков от деления в обратном порядке.
Значит, кол-во символов в репрезентации числа 50 в системе счисления с основанием x будет равно log_x(50), округленный в большую сторону
главная часть:
Так как функция логарифма является монотонной, то с увеличением основание и константой в аргументе, результат будет уменьшаться. Значит можно использовать бинпоиск для улучшения асимптотики. Но раз ты хочешь меньше строк в коде, то просто примитивно в цикле пройдемся, проверяя подходит ли каждое число по возрастанию и после первого совпадения выведем ответ и выйдем из цикла(как раз 5 строк будет):
import math
for i in range(2, 11):
if math.ceil(math.log(50, i)) == 3:
print(i)
break
послесловие:
меньше строк - не значит лучше/проще