Нужно положить в set степени двойки, остановившись, когда пойдут числа длинее 18 цифр.
storage = set()
i = 0
while True:
strr = str(2**i)
if len(strr) > 18:
break
storage.add(strr)
i += 1
Если бы нужная степень была известна заранее, то можно было бы сделать гораздо проще:
storage = {str(2 ** i) for i in range(32)}
но в том и загвоздка, что заранее степень не известна.
Условие на брейк лишнее, вместо while True можно было вписать while len(strr) <= 18: Ну и этоо нейминг какой то ни о чем
Не ну почему можно уж, ничего особенно сложного взять логарифм от 10**17
С логарифмом мысль, надо попробовать.
Обсуждают сегодня