천장함수를 바닥함수로 표현하는 법
n≥0,k>0 라 할 때,
kn 에 대해서 ⌊kn⌋는 단순히 코드로 n / k
로 표현할 수 있다.
⌈kn⌉는 ⌊kn+k−1⌋ 로 흔히 쓰여 코드에선 (n+k-1)/k
로 얻는 것이 흔하다.
이걸 좀 더 그림과 함께 보자.

흔히 이 영역에 n이 있다면 ⌊kn⌋ 는 1 이 된다. 이 때의 구간은 [k,2k−1] 이다.
천장함수(올림 연산)을 보자
⌈kn⌉=2 가 되려면 구간은 [k+1,2k] 이고, 다음과 같다.

여기에 k−1 를 더한 구간은 [2k,3k−1] 로, 올바르게 천장함수의 역할을 수행하게 됨을 알 수 있다.

따라서 ⌈kn⌉=⌊kn+k−1⌋ 이다.
0번째 인덱스부터 K씩 증가하는 수의 포함 개수
어떤 수가 k−1,2k−1,3k−1,… 처럼 되면 구간 길이 n에서 이 수가 표시되는 개수는 ⌊kn⌋ 로 깔끔하게 표현된다.
당연히 코드는 n/k
이다.
하지만 어떤 수가 0,k,2k,3k,… 처럼 늘어나며 표시된다고 하자.
그럼 [0,n] 구간에서 위 수가 표시되는 개수는 얼마일까?
n=3k 라 하자. 그럼 다음과 같이 총 4개가 포함된다.

이를 천장함수의 표현으로 표현하면 ⌈kn+1⌉ 개가 포함된다고 할 수 있다.
이는 바닥함수로 ⌊kn+k⌋=⌊kn⌋+1 이다.
Comments