만드는 중입니다

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

단조 증가 수열로 자르기

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

요약
큰 정수 x에 쉼표를 최소한으로 넣어 각 조각이 b 이하이고 0으로 시작하지 않으며, 조각들이 왼쪽에서 오른쪽으로 갈수록 같거나 커지도록 만듭니다.
난이도

보통10점 중 6점

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

문제

단조 수열은 항을 따라갈 때 값이 계속 증가하거나 계속 감소하는 수열이다. 단조 증가 수열에서는 각 항이 바로 앞 항보다 크거나 같다. 수열 a1,…,ana_1, \dots, a_n이 단조 증가인 것은 모든 1≤i<n1 \le i < n에 대해 ai≤ai+1a_i \le a_{i+1}이 성립할 때이고, 그때만이다. 예를 들어 1,2,2,4,51,2,2,4,5는 단조 증가 수열이다.

단조 수열은 미적분학과 해석학에 나온다. 함수가 일정 구간에서 어떻게 움직이는지 분석하기 쉽게 해 준다.

문제 출제자 중 한 명은 큰 정수를 좋아한다. 대만 온라인 프로그래밍 대회에서도 큰 정수를 다루는 문제가 자주 출제되었다. 이번 문제는 큰 정수와 단조 증가 수열을 결합한다. 큰 정수 xx의 자릿수 사이에 쉼표를 넣어 단조 증가 수열을 만들되, 다음 조건을 지켜야 한다.

  • 마지막 항은 bb 이하이다.
  • 0 앞에는 쉼표를 넣을 수 없다.
  • 쉼표의 개수는 최소여야 한다.

xx의 자릿수가 kk개이고 x=d1d2⋯dkx = d_1 d_2 \cdots d_k라고 하자. 예를 들어 x=654321x=654321, b=1000b=1000이면 d3d_3 뒤와 d5d_5 뒤에 쉼표를 넣어 6,54,3216,54,321을 만들 수 있다.

xx를 모든 항이 bb 이하인 단조 증가 수열로 바꾸는 데 필요한 쉼표의 최소 개수를 구하라. 그런 방법이 없으면 NO WAY를 출력한다.

입력

두 개의 음이 아닌 정수 xx와 bb가 주어진다.

출력

xx를 모든 항이 bb 이하인 단조 증가 수열로 바꾸는 데 필요한 쉼표의 최소 개수를 출력한다. 그런 방법이 없으면 NO WAY를 출력한다.

제한

  • x≤10100000x \le 10^{100000}
  • b<264b < 2^{64}
  • x>0x > 0이면 선행 0은 없다.

예제2

  1. 예제 1

    입력
    654321 1000
    
    예상 출력
    2
    
  2. 예제 2

    입력
    654321 100
    
    예상 출력
    NO WAY