자기곱

시간 제한3초메모리 제한256 MB

요약
양의 정수 N과 그 각 자릿수의 곱을 곱한 값(자기곱)이 주어진 구간 [A,B] 안에 드는 N의 개수를 B가 10^18까지인 조건에서 구합니다.
난이도

보통10점 중 7점

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

문제

양의 정수 N의 자리곱은 N을 십진수로 썼을 때 각 자리의 숫자를 모두 곱한 값입니다. 예를 들어 2612의 자리곱은 2 × 6 × 1 × 2 = 24입니다.

N의 자기곱은 N에 N의 자리곱을 곱한 값입니다. 따라서 2612의 자기곱은 2612 × 24 = 62688입니다.

두 양의 정수 A와 B가 주어집니다. 자기곱이 A 이상 B 이하인 양의 정수가 몇 개인지 구하세요.

입력

첫째 줄에 두 정수 A와 B가 공백으로 구분되어 주어집니다.

  • 1 ≤ A ≤ B < 10^18

출력

자기곱이 A 이상 B 이하인 양의 정수의 개수를 출력합니다.

예제3

  1. 예제 1

    입력
    20 30
    
    예상 출력
    2
    
  2. 예제 2

    입력
    145 192
    
    예상 출력
    4
    
  3. 예제 3

    입력
    2224222 2224222
    
    예상 출력
    1