무질서에 순서 매기기

자릿수 합, 각 자릿수에 1을 더한 값들의 곱, 수의 크기 순으로 정한 순서에서 주어진 문자열보다 앞에 오는 n자리 문자열 개수를 셉니다.

보통7동적 계획법조합론수학아직 제출이 없습니다시간 제한1초메모리 제한256 MB

문제

숫자를 나열하면 보통 하나의 수를 뜻하지만, 다르게 해석할 수도 있다. 이 문제에서는 길이가 같은 숫자 나열 사이에 새로운 순서 관계 \prec 를 정의한다.

nn 개의 숫자로 이루어진 나열 s=d1d2dns = d_1 d_2 \cdots d_n 을 생각하자. 각 did_i (1in)(1 \le i \le n)00 부터 99 까지의 숫자 하나다. sum(s)\mathrm{sum}(s), prod(s)\mathrm{prod}(s), int(s)\mathrm{int}(s) 를 다음과 같이 정의한다.

  • sum(s)=d1+d2++dn\mathrm{sum}(s) = d_1 + d_2 + \cdots + d_n
  • prod(s)=(d1+1)×(d2+1)××(dn+1)\mathrm{prod}(s) = (d_1 + 1) \times (d_2 + 1) \times \cdots \times (d_n + 1)
  • int(s)=d1×10n1+d2×10n2++dn×100\mathrm{int}(s) = d_1 \times 10^{n-1} + d_2 \times 10^{n-2} + \cdots + d_n \times 10^0

int(s)\mathrm{int}(s) 는 나열 ss 를 평범하게 십진수로 읽은 정수다.

길이가 같은 두 나열 s1s_1s2s_2 에 대해, 다음 세 조건 중 하나를 만족할 때 그리고 그때만 s1s2s_1 \prec s_2 이다. 즉 s1s_1s2s_2 보다 작다.

  1. sum(s1)<sum(s2)\mathrm{sum}(s_1) < \mathrm{sum}(s_2)
  2. sum(s1)=sum(s2)\mathrm{sum}(s_1) = \mathrm{sum}(s_2) 이고 prod(s1)<prod(s2)\mathrm{prod}(s_1) < \mathrm{prod}(s_2)
  3. sum(s1)=sum(s2)\mathrm{sum}(s_1) = \mathrm{sum}(s_2) 이고 prod(s1)=prod(s2)\mathrm{prod}(s_1) = \mathrm{prod}(s_2) 이고 int(s1)<int(s2)\mathrm{int}(s_1) < \mathrm{int}(s_2)

길이가 22 인 나열끼리는 이 순서가 다음과 같이 매겨진다.

0001100220110330122189989900 \prec 01 \prec 10 \prec 02 \prec 20 \prec 11 \prec 03 \prec 30 \prec 12 \prec 21 \prec \cdots \prec 89 \prec 98 \prec 99

길이가 nn 인 나열 ss 가 주어진다. 위에서 정의한 순서로 ss 보다 작은 길이 nn 의 나열이 몇 개인지 세어라.

입력

입력은 한 줄로 주어진다.

d1d2...dn

nn1414 이하의 양의 정수이고, d1,d2,,dnd_1, d_2, \ldots, d_n 은 각각 00 부터 99 까지의 숫자다. 맨 앞자리가 00 인 나열도 입력으로 주어진다.

출력

위에서 정의한 순서로 d1d2dnd_1 d_2 \ldots d_n 보다 작은 길이 nn 의 숫자 나열이 몇 개인지 한 줄에 출력한다.