Предмет: Информатика, автор: annamorozova3515

Напишите короткий код на Python до 4-5 строк(знаю, что можно такой код написать, а не расписывать на 11 строк) по заданию:
Ука­жи­те наи­мень­шее ос­но­ва­ние си­сте­мы счис­ле­ния, в ко­то­рой за­пись числа 50 трех­знач­на. #Желательно, с пояснениями в виде комментариев в программе

Ответы

Автор ответа: gloomgust
0

предисловие:

Перевод 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

послесловие:

меньше строк - не значит лучше/проще

Похожие вопросы
Предмет: Русский язык, автор: даша2777
Предмет: Математика, автор: oleggritsay96