만드는 중입니다

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

Fair and Square (Large 1)

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

요약
각 구간 [A, B]에 속하면서 회문이면서 회문의 제곱인 수의 개수를 구합니다.
난이도

보통10점 중 6점

유형
수학, 완전 탐색, 이분 탐색
정답자
아직 제출이 없습니다

문제

리틀 존은 회문을 좋아해서 회문을 공정한 수라고 부른다. 회문은 앞에서 읽어도 뒤에서 읽어도 같은 정수다. 6, 11, 121은 회문이고 10, 12, 223, 2244는 회문이 아니다. 앞에 붙는 0은 따지지 않으므로 010 = 10 같은 표기로 10이 회문이 되지는 않는다.

리틀 존은 제곱수에도 관심이 생겨서 fair and square 수를 정의했다. 어떤 수가 회문이면서 동시에 회문의 제곱이면 그 수는 fair and square 수다. 1, 9, 121은 각각 1, 3, 11의 제곱이고 그 자신도 회문이므로 fair and square 수다. 반면 16, 22, 676은 fair and square 수가 아니다. 16은 회문이 아니고, 22는 제곱수가 아니며, 676은 회문이자 제곱수이지만 제곱근 26이 회문이 아니다.

구간이 주어지면 그 구간 안에 fair and square 수가 몇 개 있는지 세는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다. 다음 TT개의 줄에 각각 두 정수 AA와 BB가 공백으로 구분되어 주어진다. AA와 BB는 리틀 존이 살펴보는 구간의 양 끝이다.

제한

  • 1≤T≤100001 \le T \le 10000
  • 1≤A≤B≤10141 \le A \le B \le 10^{14}

출력

각 테스트 케이스마다 한 줄에 "Case #x: y" 형식으로 출력한다. xx는 1부터 시작하는 테스트 케이스 번호이고, yy는 A≤n≤BA \le n \le B를 만족하는 fair and square 수 nn의 개수다.

예제3

  1. 예제 1

    입력
    3
    1 4
    10 120
    100 1000
    
    예상 출력
    Case #1: 2
    Case #2: 0
    Case #3: 2
    
  2. 예제 2

    입력
    1
    1 100000000000000
    
    예상 출력
    Case #1: 39
    
  3. 예제 3

    입력
    12
    1 1
    2 2
    2 3
    4 4
    5 8
    9 9
    9 120
    10 120
    121 121
    122 483
    484 484
    485 10200
    
    예상 출력
    Case #1: 1
    Case #2: 0
    Case #3: 0
    Case #4: 1
    Case #5: 0
    Case #6: 1
    Case #7: 1
    Case #8: 0
    Case #9: 1
    Case #10: 0
    Case #11: 1
    Case #12: 0