def solution(arr, queries):
    answer = arr

    for a in queries:
        i = a[0]
        j = a[1]
        k = a[2]

        for c in range(i, j+1):
            if c % k == 0:
                answer[c] += 1

    return answer

def solution(strArr):
    a = [0]*31
    for x in strArr:
        a[len(x)] += 1
    
    return max(a)

def solution(n, slicer, num_list):
    answer = []
    
    a = slicer[0]
    b = slicer[1]
    c = slicer[2]
    
    for i in range(len(num_list)):
        if n == 1:
            answer = num_list[0:b+1]
        elif n == 2:
            answer = num_list[a:]
        elif n == 3:
            answer = num_list[a:b+1]
        elif n == 4:
            answer = num_list[a:b+1:c]
        
    return answer

a = int(input())
c = int(input())

b_square = c**2 - a**2
print(b_square)

def solution(arr):
    
    while len(arr) & (len(arr)-1) != 0:
        arr.append(0)
    
    return arr

비트 연산자 &를 사용할떄,

(1) len(list)가 2의 거듭제곱이면, len(list) $ len(list)-1은 항상 0이고,

(2) len(list)가 2의 거듭제곱이 아니면, len(list) $ len(list)-1은 항상 0이 아니다. —> 신기함

while 문을 사용해서, len(arr)&(len(arr)-1) ≠0 해당 조건이 만족할때까지, arr에 0을 추가함으로써, 거듭제곱이 되는 순간이 오면 루프를 멈추고, 그 전까지 arr에 0을 추가한다.