結果

問題 No.58 イカサマなサイコロ
ユーザー Common Lisp
提出日時 2024-11-15 15:07:04
言語 Common Lisp
(sbcl 2.5.0)
結果
AC  
実行時間 11 ms / 5,000 ms
コード長 1,174 bytes
コンパイル時間 1,673 ms
コンパイル使用メモリ 43,592 KB
実行使用メモリ 28,112 KB
最終ジャッジ日時 2024-11-15 15:07:06
合計ジャッジ時間 1,143 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 10
権限があれば一括ダウンロードができます
コンパイルメッセージ
; compiling file "/home/judge/data/code/Main.lisp" (written 15 NOV 2024 03:07:04 PM):

; wrote /home/judge/data/code/Main.fasl
; compilation finished in 0:00:00.107

ソースコード

diff #

(defun main (&rest argv)
  (declare (ignorable argv))
  (let* ((*read-default-float-format* 'double-float)
         (n (read))
         (k (read))
         (dp1 (make-array (list 100 100) :element-type 'double-float :initial-element 0d0))
         (dp2 (make-array (list 100 100) :element-type 'double-float :initial-element 0d0))
         (res 0d0))
    (setf (aref dp1 0 0) 1d0
          (aref dp2 0 0) 1d0)
    (loop for i from 0 below n do
          (loop for j from 0 to (* 6 n) do
                (loop for k from 1 to 6 do
                      (incf (aref dp1 (1+ i) (+ j k)) (/ (aref dp1 i j) 6)))))
    (loop for i from 0 below n do
          (loop for j from 0 to (* 6 n)
                if (< i (- n k))
                  do (loop for k from 1 to 6 do
                           (incf (aref dp2 (1+ i) (+ j k)) (/ (aref dp2 i j) 6)))
                else
                  do (loop for k from 4 to 6 do
                           (incf (aref dp2 (1+ i) (+ j k)) (/ (aref dp2 i j) 3)))))
    (loop for i from 0 to (* 6 n) do
          (loop for j from 0 below i do
                (incf res (* (aref dp1 n j) (aref dp2 n i)))))
    (format t "~f~%" res)))

(main)
0