만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

소수와 XOR? 말도 안 돼

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

요약
L과 R(최대 10^12)이 주어질 때, [L, R] 구간의 소수 중 일부를 XOR한 값으로 만들 수 있는 정수의 개수를 구합니다.
난이도

어려움10점 중 8점

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

문제

PLR=P∩[L;R]\mathbb{P}_{LR} = \mathbb{P} \cap [L;R]라고 정의한다. 여기서 P\mathbb{P}는 소수의 집합이다. 즉, PLR\mathbb{P}_{LR}은 LL 이상 RR 이하인 모든 소수의 집합이다.

LL과 RR이 주어졌을 때, PLR\mathbb{P}_{LR}의 부분집합(공집합 포함) 중 하나의 XOR로 나타낼 수 있는 정수의 개수를 구하라.

입력

첫째 줄에 정수 TT (1≤T≤1001 \le T \le 100)가 주어진다. 이는 처리할 테스트 케이스의 개수이다. 이어서 TT개의 테스트 케이스가 주어지며, 각 테스트 케이스는 정수 LL과 RR (2≤L≤R≤10122 \le L \le R \le 10^{12})로 이루어진다.

출력

각 테스트 케이스에 대해 답을 한 줄에 하나씩 출력한다.

힌트

첫 번째 예제에서 PLR={2,3,5,7}\mathbb{P}_{LR} = \{2, 3, 5, 7\}이다.

  • 0=2⊕5⊕70 = 2 \oplus 5 \oplus 7
  • 1=2⊕31 = 2 \oplus 3
  • 2=22 = 2
  • 3=33 = 3
  • 4=3⊕74 = 3 \oplus 7
  • 5=2⊕75 = 2 \oplus 7
  • 6=3⊕56 = 3 \oplus 5
  • 7=77 = 7

두 번째 예제에서는 PLR=∅\mathbb{P}_{LR} = \varnothing이므로 0만 XOR로 나타낼 수 있다.

예제1

  1. 예제 1

    입력
    3
    2 10
    999999940 1000000000
    2 1000000000000
    
    예상 출력
    8
    1
    1099511627776