보일의 법칙

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

요약
각 자릿수의 곱을 N에 곱한 값(자기곱)이 주어진 구간 [A, B] 안에 드는 1018 이하의 양의 정수 N의 개수를 구하는 문제입니다.
난이도

어려움10점 중 8점

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

문제

양의 정수 N의 자리곱은 N의 십진수 각 자리 숫자를 모두 곱한 값입니다. 가령 2612의 자리곱은 2 * 6 * 1 * 2 = 24입니다.

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

두 정수 A와 B가 주어질 때, 자기곱이 A 이상 B 이하인 양의 정수 N의 개수를 구하세요.

입력

첫 번째 줄에 두 정수 A와 B가 주어집니다. (1 <= A <= B < 101810^{18})

출력

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

힌트

19, 24, 32, 41의 자기곱은 각각 171, 192, 192, 164입니다. 따라서 범위 [145, 192]에서는 이 네 수가 조건을 만족합니다.

예제1

  1. 예제 1

    입력
    145 192
    
    예상 출력
    4