представлении состоит исключительно из единиц. Может этим как-нибудь воспользоваться можно?
сейчас подумаю, попробую накидаю пару тестов
идея интересная только начал проверять и немного не из едениц а for i in range(11): print(bin(2 ** i)) 0b1 0b10 0b100 0b1000 0b10000 0b100000 0b1000000 0b10000000 0b100000000 0b1000000000 0b10000000000
А, ну да, чот я не то спорол. Основание ж 2, поэтому это будут "десятки".
Запарился интересной идеей переписал все перепроверил все протестил РАБОТАЕТ А по времени нет прото ппц def two_check(a): if a[0] == '0': a = a[1:] l = len(a) count = 0 for r in range(l): onebyone = "" for s in range(r, l): onebyone += a[s] if '1' in f'{int(onebyone):b}'[1:]: continue else: count += 1 return count
Ну у тебя все равно О не изменилось, так что оно и не пройдет.
ну вложенности циклов как побороть я понятия не имею
Тебе нужно думать в сторону "как мне перебрать меньше элементов", а не "как быстрее перебрать херову гору элементов".
так это была моя первая мысль но фиг его знает как они не повторяются .... может быть конечно есть какая-то фича типо проверить изначально строку и отмести часть перебора
Тут скорее можно что-то предварительно посчитать, чтобы каждый раз не пересчитывать, а вот что - хз. Если б тебе нужно было найти какой-нибудь подсписок, сумма элементов которого даст искомое число, можно было бы просто префиксные суммы посчитать, а тут - как-то хз.
Обсуждают сегодня