Общий расчёт делается через двоичный логарифм (его можно заменить делением двух десятичных или натуральных логарифмов) и потом округление до целого числа с избытком (т.е. округляем всегда вверх) обозначается вот такими палочками с выступами сверху ⌈ ⌉ .
Единственный нюанс в том, что это формула для N значений. А тут спрашивается, сколько разрядов нужно для хранения числа 134.
Я так понимаю, что при этом количество значений N = 134 + 1 = 135 (эта единица- учёт того, что есть ещё и нулевое значение, по крайней мере в такой форме хранения целых числел- в виде двоичного числа).
Ну, либо можно использовать таблицу степеней двойки, и подобрать по ней такую степень, значение которой равно или чуть больше вашего числа. Опять же, здесь N- это количество значений, которые можно хранить в двоичных разрядов (т.е. тут тоже надо считать и нулевое значение). Например:
1 2
2 4
3 8
4 16
5 32
6 64
7 128 <-- это значение ещё не достаточное (меньше, чем 135)
8 256 <-- а вот это значение минимально необходимое (8 разрядов)
На будущее: конкретнее объясняй откуда берутся числа(например ввод через input или конкретные значения)
Если что, то что после # это комментарий и его можно убрать
def count(a, p):
return (p-a)/2 #периметр это сумма сторон. Отнимем A и получим сумму двух сторон. Т.к. они одинаковые, при делении на 2 получим длину одной из двух сторон
# я для примера возьму числа у пользователя через input
a = int(input('Введи A: '))
p = int(input('Введи периметр: '))
x = count(a, p)
print(f'Одна сторона: {x}. Две одинаковых стороны вместе: {x*2}')
Общий расчёт делается через двоичный логарифм (его можно заменить делением двух десятичных или натуральных логарифмов) и потом округление до целого числа с избытком (т.е. округляем всегда вверх) обозначается вот такими палочками с выступами сверху ⌈ ⌉ .
Единственный нюанс в том, что это формула для N значений. А тут спрашивается, сколько разрядов нужно для хранения числа 134.
Я так понимаю, что при этом количество значений N = 134 + 1 = 135 (эта единица- учёт того, что есть ещё и нулевое значение, по крайней мере в такой форме хранения целых числел- в виде двоичного числа).
Ну, либо можно использовать таблицу степеней двойки, и подобрать по ней такую степень, значение которой равно или чуть больше вашего числа. Опять же, здесь N- это количество значений, которые можно хранить в двоичных разрядов (т.е. тут тоже надо считать и нулевое значение). Например:
1 2
2 4
3 8
4 16
5 32
6 64
7 128 <-- это значение ещё не достаточное (меньше, чем 135)
8 256 <-- а вот это значение минимально необходимое (8 разрядов)
9 512
10 1024
11 2048
12 4096
13 8192
14 16384
15 32768
16 65536
На будущее: конкретнее объясняй откуда берутся числа(например ввод через input или конкретные значения)
Если что, то что после # это комментарий и его можно убрать
def count(a, p):
return (p-a)/2 #периметр это сумма сторон. Отнимем A и получим сумму двух сторон. Т.к. они одинаковые, при делении на 2 получим длину одной из двух сторон
# я для примера возьму числа у пользователя через input
a = int(input('Введи A: '))
p = int(input('Введи периметр: '))
x = count(a, p)
print(f'Одна сторона: {x}. Две одинаковых стороны вместе: {x*2}')
Объяснение:
код работает