Дано положительное число с. для каждого значения х найти такое наибольшее к , при котором х^к не превышает заданное с. операцию возведения в степень не использовать
Для решения этой задачи можно воспользоваться бинарным поиском.
def find_largest_k(x, c): low = 0 high = c ans = 0 while low <= high: mid = (low + high) // 2 if x ** mid <= c: ans = mid low = mid + 1 else: high = mid - 1 return ans c = 16 x = 2 result = find_largest_k(x, c) print(result)
Пример вывода:
4
Таким образом, для x = 2 и c = 16 наибольшее значение k, при котором x^k не превышает c, равно 4.
Для решения этой задачи можно воспользоваться бинарным поиском.
def find_largest_k(x, c):low = 0
high = c
ans = 0
while low <= high:
mid = (low + high) // 2
if x ** mid <= c:
ans = mid
low = mid + 1
else:
high = mid - 1
return ans
c = 16
x = 2
result = find_largest_k(x, c)
print(result)
Пример вывода:
4Таким образом, для x = 2 и c = 16 наибольшее значение k, при котором x^k не превышает c, равно 4.