멋진 수

시간 제한2초메모리 제한128 MB

요약
L부터 R까지의 정수 중 이진수로 나타냈을 때 같은 숫자가 3번 연속으로 나오는 수의 개수를 구하는 문제입니다.
난이도

보통10점 중 6점

유형
동적 계획법, 비트 연산, 수학
정답자
아직 제출이 없습니다

문제

정수를 이진수로 나타냈을 때, 같은 숫자 0 또는 1이 세 번 이상 연속해서 나타나면 그 수를 멋진 수라고 한다. 예를 들어 8의 이진수는 1000이고 15의 이진수는 1111이므로 둘 다 멋진 수이다. 반면 27의 이진수는 11011이므로 멋진 수가 아니다.

두 정수 L과 R이 주어질 때, L 이상 R 이하의 정수 중 멋진 수가 몇 개인지 구하라.

입력

첫째 줄에 두 정수 L과 R이 주어진다.

0 <= L <= R <= 2147483647

출력

L 이상 R 이하의 멋진 수의 개수를 출력한다.

예제4

  1. 예제 1

    입력
    17 100
    
    예상 출력
    49
    
  2. 예제 2

    입력
    0 16
    
    예상 출력
    5
    
  3. 예제 3

    입력
    2000000000 2100000000
    
    예상 출력
    100000001
    
  4. 예제 4

    입력
    2 6
    
    예상 출력
    0