만드는 중입니다

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

무질서에 순서 매기기

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

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

보통10점 중 7점

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

문제

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

nn 개의 숫자로 이루어진 나열 s=d1d2⋯dns = d_1 d_2 \cdots d_n 을 생각하자. 각 did_i (1≤i≤n)(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×10n−1+d2×10n−2+⋯+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_1 과 s2s_2 에 대해, 다음 세 조건 중 하나를 만족할 때 그리고 그때만 s1≺s2s_1 \prec s_2 이다. 즉 s1s_1 이 s2s_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 인 나열끼리는 이 순서가 다음과 같이 매겨진다.

00≺01≺10≺02≺20≺11≺03≺30≺12≺21≺⋯≺89≺98≺9900 \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

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

출력

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

예제5

  1. 예제 1

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

    입력
    020
    
    예상 출력
    5
    
  3. 예제 3

    입력
    118
    
    예상 출력
    245
    
  4. 예제 4

    입력
    11111111111111
    
    예상 출력
    40073759
    
  5. 예제 5

    입력
    99777222222211
    
    예상 출력
    23733362467675