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)