꿈속의 표

시간 제한5초메모리 제한512 MB

요약
각 행은 행 번호에서 시작해 이전 값에 뒤집은 값을 더해 이어지며 주어진 구간에 든 셀 개수를 셉니다.
난이도

보통10점 중 7점

유형
시뮬레이션, 정렬, 이분 탐색
정답자
아직 제출이 없습니다

문제

아니차는 이상한 꿈을 꾸고 있다. 꿈속에는 끝없이 넓은 칠판이 있고, 그 위에 행과 열이 무한히 이어지는 표가 그려져 있다. 표에 적힌 수는 무한히 많지만, 같은 수가 나타나는 횟수는 언제나 유한하다.

표의 규칙은 단순하다. 각 행의 첫 칸에는 그 행의 번호가 적혀 있다. 첫 열이 아닌 칸에는 바로 왼쪽 칸의 수와 그 수를 십진법에서 거꾸로 뒤집은 수를 더한 값이 적혀 있다.

ii행 jj열의 값을 T(i,j)T(i, j)라고 하면 다음이 성립한다.

T(i,1)=iT(i, 1) = i

T(i,j)=T(i,j−1)+rev(T(i,j−1))(j>1)T(i, j) = T(i, j - 1) + \mathrm{rev}(T(i, j - 1)) \quad (j > 1)

표의 앞쪽 몇 행과 몇 열이다. 표는 아래쪽과 오른쪽으로 끝없이 이어진다.

아니차는 칠판을 무심코 지나쳤지만, 칠판 뒤에 놓인 램프가 눈에 들어왔다. 램프도 아니차를 알아보고, 안에서 친절한 유령 보조가 나왔다.

"아니차! 내가 내는 질문 QQ개에 모두 맞게 답하면 웨하스 한 봉지와 쿠키 한 봉지 중에서 원하는 쪽을 주겠다. 질문마다 정수 AA와 BB를 주겠으니, 구간 [A,B][A, B]에 속하는 수가 칠판 위에 모두 몇 번 나타나는지 답해라."

같은 값이 여러 칸에 적혀 있으면 칸의 개수만큼 세어야 한다. 아니차는 끝내 답을 하지 못하고 잠에서 깼다.

입력

첫째 줄에 질문의 개수 QQ가 주어진다. (1≤Q≤1051 \le Q \le 10^5)

다음 QQ개 줄에 질문이 한 개씩 주어진다. 각 줄에는 정수 AA와 BB가 공백을 사이에 두고 주어진다. (1≤A≤B≤10101 \le A \le B \le 10^{10})

출력

QQ개 줄을 출력한다. ii번째 줄에는 ii번째 질문의 답, 곧 값이 AA 이상 BB 이하인 칸의 개수를 출력한다.

힌트

rev(x)\mathrm{rev}(x)는 xx를 십진법에서 거꾸로 뒤집어 읽은 수이고, 앞에 남는 00은 버린다. 예를 들어 rev(213)=312\mathrm{rev}(213) = 312이고, rev(406800)=008604=8604\mathrm{rev}(406800) = 008604 = 8604이다.

예제3

  1. 예제 1

    입력
    2
    1 10
    5 8
    
    예상 출력
    18
    8
    
  2. 예제 2

    입력
    3
    17 144
    121 121
    89 98
    
    예상 출력
    265
    25
    10
    
  3. 예제 3

    입력
    1
    1 1000000000
    
    예상 출력
    1863025563