Дана следующая последовательность чисел:
5, 100, 6, 200, 7, 400, 8, 800, 9, 1600, 10, 3200, …
На позиции 1 стоит число 5. Напишите функцию, которая будет возвращать число на позиции n
в этой последовательности.
Примеры
little_big(4) ➞ 200
little_big(5) ➞ 7
little_big(28) ➞ 819200
Примечание: исходим из того, что input всегда будет валидным.
Варианты решений
def little_big(n): return (n + 1) // 2 + 4 if n % 2 else 100 * 2** ((n // 2) - 1)
def little_big(n): return 5 + n // 2 if n % 2 else 100 * 1 << n // 2 - 1
def little_big(n): if n % 2 == 0: x = n // 2 ctr = 50 for i in range(x): ctr *= 2 return ctr else: x = n // 2 + 1 ctr = 4 for i in range(x): ctr += 1 return ctr