날짜를 계산한는 식을 작성하기 전, 먼저 나무 높이를 기준으로 하는 식을 작성해보면 (a-b)*n +a = v와 같다. a만큼 올랐다 b만큼 떨어지기를 반복하기 때문에 a-b의 거리만큼 올라가는 것을 n만큼 반복하고 마지막 날에는 a만큼 올라가고서 더 이상 떨어지지 않기 때문이다.
나무높이인 v를 기준으로 작성한 식을 응용하여 나무에 도달하기까지 걸린 기간을 구하면 위에 작성한 코드와 같다. 나무높이에서 마지막 날에 올라간 거리를 뺀 수에서 a-b를 나누면 마지막에 a만큼 올라간 하루를 제외한 날짜를 구할 수 있다.
이때 나누는 수가 소수인 경우 소수점 이하는 날짜로 보면 하루가 걸린 것과 같기 때문에 math 모듈의 올림 기능을 하는 ceil 함수를 사용해서 소수를 올림 하여 정수로 반환한다. 그리고 마지막에 a만큼 올라간 날을 빼주어서 날짜 기준으로는 하루를 뺀 것과 같기 때문에 +1을 해주었다