Problem p03286 (python)

Fixed submission:
#import sys
#input = sys.stdin.readline
#template input
import bisect

def IT():
    return int(input())
def IL():
    return [int(_) for _ in input().split()]
def SL():
    return [int(_) for _ in input().split()]
def ILS(n):
    return [int(input()) for _ in range(n)]
def SLS(n):
    return [input() for _ in range(n)]
def ILSS(n):
    return [[int(_) for _ in input().split()] for j in range(n)]

#template technique
def bit_full_search(ss):
    n = len(ss)
    for i in range(1 << n):
        s = ""
        for j in range(n + 1):
            if ((1 & i >> j) == 1):
                s += ss[j]
        print(s)

def bit_full_search2(A):
    #https://blog.rossywhite.com/2018/08/06/bit-search/
    value = []
    for i in range(1 << len(A)):
        output = []

        for j in range(len(A)):
            if ((i >> j) & 1) == 1:
                #output.append(A[j])
                output.append(A[j])
        value.append([format(i, 'b').zfill(16), sum(output)])
    return value


"""ここからメインコード"""
def main():
    n = IT()
    #それぞれ半分全列挙
    list1 = [(-2) **  i for i in range(16)]
    list2 = [(-2) ** (i + 16) for i in range(16)]

    list1 = bit_full_search2(list1)
    list1.sort(key=lambda x:x[1])
    list1_bin = [list1[i][0] for i in range(len(list1))]
    list1_val = [list1[i][1] for i in range(len(list1))]

    list2 = bit_full_search2(list2)
    list2.sort(key=lambda x:x[1])
    list2_bin = [list2[i][0] for i in range(len(list2))]
    list2_val = [list2[i][1] for i in range(len(list2))]
    ans = 0
    for i in range(len(list1_val)):
        j = bisect.bisect_left(list2_val, n - list1_val[i])
        if j < len(list2_val):
            if list1_val[i] + list2_val[j] == n:
                ans = list2_bin[j] +list1_bin[i]
                break
    print(int(ans))
main()

Buggy submission (verdict: Runtime Error):
n=int(input())
#正答が出るプログラムではないです
base = [(-2)** i for i in range(32)]
num = 0
for i0 in range(2):
  num += base[0]*i0
  for i1 in range(2):
    num += base[1]*i1
    for i2 in range(2):
      num += base[2]*i2
      for i3 in range(2):
        num += base[3]*i3
        for i4 in range(2):
          num += base[4]*i4
          for i5 in range(2):
            num += base[5]*i5
            for i6 in range(2):
              num += base[6]*i6
              for i7 in range(2):
                num += base[7]*i7
                for i8 in range(2):
                  num += base[8]*i8
                  for i9 in range(2):
                    num += base[9]*i9
                    for i10 in range(2):
                      num += base[10]*i10
                      for i11 in range(2):
                        num += base[11]*i11
                        for i12 in range(2):
                          num += base[12]*i12
                          for i13 in range(2):
                            num += base[13]*i13
                            for i14 in range(2):
                              num += base[14]*i14
                              for i15 in range(2):
                                num += base[15]*i15
                                for i16 in range(2):
                                  num += base[16]*i16
                                  for i17 in range(2):
                                    num += base[17]*i17
                                    for i18 in range(2):
                                      num += base[18]*i18
                                      for i19 in range(2):
                                        num += base[19]*i19
                                        for i20 in range(2):
                                          num += base[20]*i20
                                          for i21 in range(2):
                                            num += base[21]*i21
                                            for i22 in range(2):
                                              num += base[22]*i22
                                              for i23 in range(2):
                                                num += base[23]*i23
                                                for i24 in range(2):
                                                  num += base[24]*i24
                                                  for i25 in range(2):
                                                    num += base[25]*i25
                                                    for i26 in range(2):
                                                      num += base[26]*i26
                                                      for i27 in range(2):
                                                        num += base[27]*i27
                                                        for i28 in range(2):
                                                          num += base[28]*i28
                                                          for i29 in range(2):
                                                            num += base[29]*i29
                                                            for i30 in range(2):
                                                              num += base[30]*i30
                                                              for i31 in range(2):
                                                                num += base[31]*i31
                                                                if num == n: 
                                                                  ans = str(i0)+str(i1)+str(i2)+str(i3)+str(i4)+str(i5)+str(i6)+str(i7)+str(i8)+str(i9)+str(i10)+str(i11)+str(i12)+str(i13)+str(i14)+str(i15)+str(i16)+str(i17)+str(i18)+str(i19)+str(i20)+str(i21)+str(i22)+str(i23)+str(i24)+str(i25)+str(i26)+str(i27)+str(i28)+str(i29)+str(i30)+str(i31)

print(ans)