진수 정렬 (Hard)

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

요약
길이 N인 모든 M진수를 M-1의 개수, 그다음 M-2의 개수 순으로 오름차순 정렬하고 개수가 모두 같으면 뒤집은 수의 오름차순으로 정렬할 때, 주어진 M진수의 0부터 시작하는 위치를 구한다.
난이도

보통10점 중 6점

유형
조합론, 수학, 정렬, 구현
정답자
아직 제출이 없습니다

문제

한별이는 길이 NN의 MM진수를 모두 모은 뒤 특별한 방식으로 정렬하려 한다.

정렬 기준은 다음과 같다.

  • MM진수 내 M−1M-1인 자릿수의 개수로 오름차순 정렬한다.
  • M−1M-1의 개수가 같다면 M−2M-2인 자릿수의 개수로 오름차순 정렬한다.
  • ...
  • 22의 개수가 같다면 11인 자릿수의 개수로 오름차순 정렬한다.
  • MM진수 내 모든 숫자의 개수가 같다면 MM진수를 뒤집었을 때의 오름차순으로 정렬한다.

예를 들어, NN이 2이고 MM이 3일 때 MM진수는 다음 순서로 정렬된다.

  • 00
  • 10
  • 01
  • 11
  • 20
  • 02
  • 21
  • 12
  • 22

어느날 친구 선린이가 찾아와 길이가 NN인 MM진수 하나를 주며 몇 번째 위치에 있는지 알려달라고 했다. 하지만 한별이는 다른 일이 많아 아직 MM진수들을 정렬하지 못했다. 한별이를 도와주자!

입력

첫째 줄에 NN과 MM이 공백을 사이에 두고 주어진다.

둘째 줄에 길이 NN의 MM진수 SS가 주어진다.

MM진수는 0으로 시작할 수 있다.

출력

주어진 MM진수와 길이가 같은 모든 MM진수를 정렬하였을 때, 주어진 MM진수는 몇 번째 위치에 있는지 출력한다.

위치는 0번부터 시작한다.

제한

  • 1≤N≤101\le N\le 10
  • 2≤M≤102\le M\le 10

예제2

  1. 예제 1

    입력
    2 3
    12
    
    예상 출력
    7
    
  2. 예제 2

    입력
    3 3
    210
    
    예상 출력
    11