하늘에서 떨어지는 ∞\infty개의 별

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

요약
매일 밤 i번 점에 떨어지는 별의 수가 등차 점화식으로 주어질 때, 어떤 점의 누적 별도 K를 넘지 않도록 D일 동안 필요한 최소 청소 횟수를 구한다.
난이도

어려움10점 중 8점

유형
수학, 이분 탐색, 그리디
정답자
아직 제출이 없습니다

문제

당신은 DD일 동안 하떨별 마을의 환경 관리자로 일하게 되었다. 하떨별 마을은 하늘에서 별이 떨어지기로 유명한 마을로 별들은 다음과 같은 규칙으로 떨어진다.

  • 별이 떨어지는 위치는 ∞\infty개의 점이다. 점은 순서대로 11, 22, 33, ⋯\cdots의 번호를 갖는다.
  • 첫날 낮에 모든 점에 쌓인 별의 개수는 각각 00개다.
  • ii번 점에는 매일 밤 s_is\_i개의 별이 떨어진다. s_0s\_0, XX, MM는 상수이며, s_i+1=(s_i+X) mod Ms\_{i+1}=(s\_{i} + X) \bmod M이다.

별이 많이 쌓이면 폭발할 수 있기 때문에 쌓인 별을 청소해야 한다.

  • 임의의 ii번 점에 쌓인 별의 개수가 KK개를 초과하면 해당 점의 별들이 폭발한다.
  • 별이 떨어지는 밤이 되기 전, 낮에 청소 작업을 할 수 있다. 청소 작업을 진행하면 모든 점에 쌓인 별이 00개가 된다.

여러분은 DD일 동안 떨어진 별이 폭발하지 않게 관리해야 한다. DD일 동안 별이 폭발하지 않도록 하는 최소 청소 횟수를 구해보자.

입력

첫 번째 줄에 정수 s_0s\_0, XX, MM, DD, KK가 공백으로 구분되어 주어진다.

출력

첫 번째 줄에 DD일 동안 별이 폭발하지 않도록 할 수 있는 최소 청소 횟수를 출력한다.

제한

  • 1≤X,D,K≤10181 \le X, D, K \le 10^{18}
  • 1≤M≤K1 \le M \le K
  • 0≤s_0<M0 \le s\_0 \lt M

예제2

  1. 예제 1

    입력
    0 1 5 3 5
    
    예상 출력
    2
    
  2. 예제 2

    입력
    12 21 123 321 1234
    
    예상 출력
    32