만드는 중입니다

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

열 개의 구간

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

요약
각 구간 [l, r]에서 십진수 부분수열로 소수가 하나도 나타나지 않는 정수의 개수를 구합니다. r은 10^18까지 주어집니다.
난이도

보통10점 중 7점

유형
동적 계획법, 문자열 매칭, 정수론
정답자
아직 제출이 없습니다

문제

정수 yy의 십진수 표현에서 일부 자릿수를 지워서 얻을 수 있는 정수 xx를 xx는 yy의 십진 부분수열이라고 한다. 자릿수를 하나도 지우지 않아도 되지만, 모든 자릿수를 지울 수는 없다.

정수 xx는 x≥2x \ge 2이고 양의 약수가 1과 xx뿐일 때 소수라고 한다.

정수 xx의 십진 부분수열 중에 소수인 yy가 없으면 xx를 세컨더리 정수라고 한다. 예를 들어 168은 1, 6, 8, 16, 18, 68, 168 중 소수가 없으므로 세컨더리 정수이다. 반면 169는 19가 소수이므로 세컨더리 정수가 아니다.

각 구간 [l;r][l; r]에 속한 세컨더리 정수의 개수를 구하라.

입력

첫 줄에 구간의 개수 nn (1≤n≤101 \le n \le 10)이 주어진다.

이어서 nn개의 줄에 각각 두 정수 ll과 rr (1≤l≤r≤10181 \le l \le r \le 10^{18})이 주어진다. 이는 구간의 양 끝을 나타낸다.

출력

입력된 순서대로 각 구간에 속한 세컨더리 정수의 개수를 출력한다.

힌트

예제 테스트에서 [8;16][8; 16]에 속한 세컨더리 정수는 8, 9, 10, 14, 16이고, [157;174][157; 174]에 속한 세컨더리 정수는 160, 164, 166, 168이다.

예제1

  1. 예제 1

    입력
    3
    8 16
    157 174
    42 239
    
    예상 출력
    5
    4
    36