만드는 중입니다

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

주기 없는 방문

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

요약
길이 N의 이진 문자열에서 각 새 문자는 문자열 끝이 어떤 블록을 K번 반복한 꼴일 때 1이 됩니다. 1의 개수를 구합니다.
난이도

어려움10점 중 8점

유형
문자열, 문자열 매칭, 정수론
정답자
아직 제출이 없습니다

문제

닉은 습관을 유지하는 데 늘 어려움을 겪는다. 어떤 행동을 KK번 연속으로 하면 그 뒤로도 계속 하게 된다.

닉은 PBT(패턴 파괴 치료) 전문가인 패턴슨 박사를 매일 방문한다. 특정 날 방문했을 때 같은 행동을 KK번 연속으로 했다면, 박사는 닉에게 요금을 청구한다.

PBT 덕분에 닉은 습관을 모두 끊었지만, 패턴슨 박사를 방문하는 습관만은 남아 있다. 잦은 방문으로 닉의 가계에 부담이 커지고 있다. 다음 NN일 동안 닉이 박사에게 돈을 내야 하는 횟수를 구하라.

형식적으로, s=s1s2s3…sNs = s_1 s_2 s_3 \dots s_N을 0과 1로 이루어진 문자열이라 하자. 이 문자열은 한 번에 한 글자씩 다음 규칙으로 만들어진다.

  1. i≤Ki \leq K이면 si=0s_i = 0이다.
  2. i>Ki > K이면, s′=s1s2…si−1s' = s_1 s_2 \dots s_{i-1}이라 하자. s′s'의 끝 ∣t∣⋅K|t| \cdot K글자가 t+t+⋯+tt+t+\dots+t로 쓸 수 있는 비어 있지 않은 문자열 tt가 있으면 si=1s_i = 1이다. 그렇지 않으면 si=0s_i = 0이다.

si=1s_i = 1은 ii번째 날에 닉이 돈을 내야 함을 뜻한다. ss에 있는 1의 개수를 구하라.

화난 얼굴 표시는 닉이 돈을 낸 날을 나타낸다.

입력

한 줄에 정수 NN과 KK가 주어진다. (1≤N≤1091 \leq N \leq 10^9, 2≤K≤1092 \leq K \leq 10^9)

출력

ss에 있는 1의 개수를 나타내는 정수 하나를 출력한다.

예제2

  1. 예제 1

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

    입력
    99 5
    
    예상 출력
    19