[Python] BOJ 1407번. 2로 몇 번 나누어질까

1407번. 2로 몇 번 나누어질까

문제 링크

풀이 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 1407번. 2로 몇 번 나누어질까


a, b = map(int, input().split())


def func(num):
    cnt = num
    i = 2
    # 범위에서 2^k의 배수의 개수를 sum
    while i <= num:
        cnt += (num//i)*(i//2)
        i *= 2
    return cnt


print(func(b)-func(a-1))

비고