Учитывая положительное целое число n ≤ 10 7 , мне нужно найти наименее положительное целое число k , такое, что десятичное представление 2 k начинается с десятичного представления n .
Так, например, если n = 12, то k = 7 (потому что 2 7 = 12 8); если n = 134, то k = 27 (потому что 2 27 = 134 , 217 728); а если n = 82, то k = 209 (потому что 2 209 ≈ 8,2 3 × 10 62 ).
(Если таких k не существует, мне нужно вернуть -1.)
Я даже не пытался решить эту проблему с помощью формулы (у меня есть Понятия не имею, как), и решил решить, вычислив все степени от 2 до 1000, поместив их в список, а затем найдя индекс числа, начинающегося с n. Код работает, но ... Он даже не проходит первый тест в системе. Я понятия не имею почему, потому что это работает правильно для приведенных выше примеров. В любом случае, вот код.
def find_all():
arr = []
n = 1
for i in range(1000):
arr.append(str(n))
n = n << 1
return arr
n = str(n)
NOT_FOUND = True
#n = input()
arr = find_all()
for i in arr:
if i.startswith(n):
print(arr.index(i), n)
NOT_FOUND = False
break
if NOT_FOUND:
print(-1, n)
Что может быть не так?