숫자 골라내기

구간 [l, r]에서 서로 다른 정수를 1개 이상 k개 이하로 골라, 고른 수들의 XOR을 최소로 만들고 그 값을 출력한다.

어려움8비트 연산수학그리디동적 계획법아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

성관이는 다음 조건을 모두 만족하는 집합 SS를 만들려고 한다.

  • SS의 원소는 모두 서로 다른 자연수이다.
  • SS의 원소는 모두 ll 이상 rr 이하이다.
  • SS의 원소 개수는 11 이상 kk 이하이다.

SS의 모든 원소를 비트 XOR한 값이 가장 작아지도록 SS를 고르고, 그 XOR 값을 구하라.

입력

첫째 줄에 자연수 ll, rr, kk가 공백으로 구분되어 주어진다. (1lr10121 \le l \le r \le 10^{12}, 1kmin(106,rl+1)1 \le k \le \min(10^6, r-l+1))

출력

첫째 줄에 XOR 값의 최솟값을 출력한다. 최솟값을 만드는 집합은 여러 개일 수 있지만, 출력하는 것은 그 최솟값 하나뿐이다.