PivotOJ

Aperiodic Appointments

시간 제한: 1000ms메모리 제한: 1024MB출처: NCPC 2023BOJ 30432

문제

Nick has always struggled with maintaining habits. The problem is that he just can't stop maintaining them. If Nick does something KK times in a row, he has to keep doing it forever.

Luckily, he has started visiting Dr Patternson, an expert in PBT (Pattern Breaking Therapy). The principle of PBT is simple: Nick will visit Dr Patternson every day, and if he has done the same thing KK times in a row on a specific visit, the doctor will charge him money. This will motivate Nick to not continue this habit.

PBT has worked out great for Nick, as he has now successfully quit all his habits. Except for one, the habit of visiting Dr Patternson. The frequent visits are starting to take a toll on Nick's economy, so your task is to calculate how many times he has to pay the doctor for the next NN days.

Formally, let s=s1s2s3sNs = s_1s_2s_3\dots s_N be a string consisting of zeroes and ones. A one means that Nick has to pay the doctor on the iith day. This string is generated one character at a time, in the following way:

  1. si=0s_i = 0 if iKi \leq K.
  2. If i>Ki > K, then si=1s_i = 1 if the previous characters contains a pattern that repeats KK times. More specifically, let s=s1s2si1s' = s_1s_2\dots s_{i-1}. If there is a nonempty string tt such that the last tK|t|\cdot K characters of ss' can be written as t+t++tt+t+\dots + t, then si=1s_i = 1. Otherwise si=0s_i = 0.

You are given the numbers NN and KK, and your task is to calculate the number of ones in the string ss.

The picture represents Sample 1. An angry face means that Nick had to pay on the corresponding day.

입력

The input consists of one line with the integers NN and KK (1N1091 \leq N \leq 10^9, 2K1092 \leq K \leq 10^9).

출력

Print one integer, the number of ones in the string ss.

예제

예제 1

입력
7 2
출력
3

예제 2

입력
99 5
출력
19
코드를 제출하려면 로그인하세요.