라운드 넘버

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

소들은 손가락이 없어서 '가위바위보'로 (누가 먼저 젖을 짜일지 정하는 것처럼) 임의의 결정을 내릴 수 없습니다. 발굽으로는 동전을 던지기도 어렵죠.

그래서 소들은 라운드 넘버(round number) 맞히기를 사용합니다. 첫 번째 소가 20억 미만의 정수를 하나 고르고, 두 번째 소도 똑같이 고릅니다. 두 수가 모두 라운드 넘버이면 첫 번째 소가 이기고, 그렇지 않으면 두 번째 소가 이깁니다.

양의 정수 $N$은 그 이진 표현(앞자리 0 없이)에서 0의 개수가 1의 개수보다 많거나 같을 때 라운드 넘버라고 합니다. 예를 들어 $9$를 이진법으로 쓰면 $1001$이고, 0이 두 개, 1이 두 개이므로 $9$는 라운드 넘버입니다. $26$은 이진법으로 $11010$이며 0이 두 개, 1이 세 개이므로 라운드 넘버가 아닙니다.

소들이 수를 이진법으로 바꾸는 데는 시간이 걸려서 승자를 정하는 데도 오래 걸립니다. Bessie는 주어진 범위 안에 라운드 넘버가 몇 개 있는지 미리 알면 유리할 것이라고 생각합니다.

$Start$부터 $Finish$까지(양 끝 포함) 범위에 라운드 넘버가 몇 개 있는지 세는 프로그램을 작성하세요. ($1 \le Start < Finish \le 2{,}000{,}000{,}000$)

입력

  • 첫째 줄: 두 정수 $Start$와 $Finish$가 공백으로 구분되어 주어집니다.

출력

  • 첫째 줄: $Start$부터 $Finish$까지(양 끝 포함) 범위에 있는 라운드 넘버의 개수를 정수 하나로 출력합니다.

힌트

다음은 $2$부터 $12$까지 각 수가 라운드 넘버인지 보여줍니다. (열: 십진수, 이진수, 0의 개수 x0 + 1의 개수 x1, 판정)

 2    10  1x0 + 1x1  ROUND
 3    11  0x0 + 2x1  NOT round
 4   100  2x0 + 1x1  ROUND
 5   101  1x0 + 2x1  NOT round
 6   110  1x0 + 2x1  NOT round
 7   111  0x0 + 3x1  NOT round
 8  1000  3x0 + 1x1  ROUND
 9  1001  2x0 + 2x1  ROUND
10  1010  2x0 + 2x1  ROUND
11  1011  1x0 + 3x1  NOT round
12  1100  2x0 + 2x1  ROUND