【AtCoder ABC318A】Full Moon(Common Lisp)

関連記事

1. 問題

2. コード

まずは、繰り上げの割り算の関数 div-round-up を作ってから、計算しました。
floorは、多値を返すので余りは無視するようにしました。

(defun div-round-up (n m)
  (multiple-value-bind (ans rem) (floor (+ n (1- m)) m)
    (declare (ignore rem))
    ans))


(defun times-full-moon (N M P)
  (div-round-up (1+ (- N M)) P))

(defun main ()
  (let* ((N (read))
	 (M (read))
	 (P (read)))
    (princ (times-full-moon N M P))))

#-swank
(main)
Code language: Lisp (lisp)