가장 큰 2의 거듭제곱 약수의 합

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

요약
A와 B가 10^15까지 주어질 때, 그 구간의 각 정수에 대한 최대 2의 거듭제곱 약수의 합을 구합니다.
난이도

보통10점 중 6점

유형
수학, 정수론, 비트 연산, 재귀
정답자
아직 제출이 없습니다

문제

자연수 N에 대해, N의 약수 중 2의 거듭제곱(2^k) 꼴인 가장 큰 값을 f(N)이라고 하자. 이는 N을 자연수로 유지하면서 2로 계속 나눌 수 있는 횟수가 k일 때의 값 2^k와 같다. 예를 들어 f(15)=1이고, f(40)=8이다.

자연수 A와 B(A <= B)가 주어진다. A 이상 B 이하의 모든 자연수 x에 대해 f(x)의 합을 구하라.

f(A) + f(A+1) + ... + f(B)

입력

첫째 줄에 자연수 A와 B가 공백으로 구분되어 주어진다.

1 <= A <= B <= 10^15

출력

첫째 줄에 구하고자 하는 합을 출력한다.

예제3

  1. 예제 1

    입력
    176 177
    
    예상 출력
    17
    
  2. 예제 2

    입력
    5 9
    
    예상 출력
    13
    
  3. 예제 3

    입력
    25 28
    
    예상 출력
    8