미렉에게는 정수가 들어 있는 파일이 여러 개 있었고, 파일마다 정수를 오름차순으로 정렬해야 했다. 이름을 짐작하기 쉬운 명령줄 도구를 찾아 실행했더니 그 도구는 정수를 전부 문자열로 취급해서 사전순으로 정렬했다. 그런데도 파일은 여전히 크기순 오름차순이었고, 미렉은 이 결과에 놀랐다.
정수 집합의 사전순과 크기순이 일치한다는 것은, 원소의 십진 표기를 문자열로 정렬한 결과가 원소를 값으로 정렬한 결과와 같다는 뜻이다. 즉 집합의 두 원소 x<y마다 x의 문자열이 y의 문자열보다 사전순으로 앞서야 한다.
문자열은 앞에서부터 한 글자씩 비교하고, 한쪽이 다른 쪽의 접두사이면 짧은 쪽이 앞선다. 그래서 1은 10보다 앞서지만 98은 100보다 뒤에 온다.
구간 [A,B]가 주어질 때, 집합 {A,A+1,…,B}의 부분집합 중 사전순과 크기순이 일치하는 것이 몇 개인지 구한다. 공집합과 원소가 하나뿐인 부분집합은 모두 조건을 만족한다.
첫째 줄에 두 정수 A와 B가 주어진다. (1≤A≤B≤1018, B−A≤105)
첫째 줄에 조건을 만족하는 {A,A+1,…,B}의 부분집합의 개수 M을 출력한다. 답이 매우 커질 수 있으므로 109+7으로 나눈 나머지를 출력한다.
A=98, B=101일 때 조건을 만족하는 부분집합은 ∅, {98}, {99}, {100}, {101}, {98,99}, {100,101}이다.