아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

공정한 제곱수 (Large2)

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

요약
주어진 구간마다 앞뒤로 읽어도 같은 수이면서 그런 수의 제곱인 수가 몇 개인지 셉니다.
난이도

어려움10점 중 8점

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

문제

리틀 존은 회문수를 좋아해서 회문수를 공정한 수라고 부른다. 회문수는 앞에서 읽으나 뒤에서 읽으나 똑같은 정수다. 6, 11, 121은 회문수이고 10, 12, 223, 2244는 회문수가 아니다. 수를 적을 때 맨 앞의 0은 쓰지 않으므로, 010은 10과 같은 수로 보고 회문수로 치지 않는다.

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

구간이 하나 주어지면 그 안에 공정한 제곱수가 몇 개 있는지 세어라.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다. 다음 TT개의 줄에 각각 구간의 양 끝 값인 정수 AA와 BB가 공백으로 구분되어 주어진다.

제한

  • 1≤T≤10001 \le T \le 1000
  • 1≤A≤B≤101001 \le A \le B \le 10^{100}

출력

각 테스트 케이스마다 Case #x: y 형식으로 한 줄씩 출력한다. x는 1부터 시작하는 테스트 케이스 번호이고, y는 AA 이상 BB 이하인 공정한 제곱수의 개수다.

예제2

  1. 예제 1

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

    입력
    4
    1 1
    5 5
    676 676
    484 484
    
    예상 출력
    Case #1: 1
    Case #2: 0
    Case #3: 0
    Case #4: 1