結果

問題 No.58 イカサマなサイコロ
ユーザー Common LispCommon Lisp
提出日時 2024-11-15 15:07:04
言語 Common Lisp
(sbcl 2.3.8)
結果
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
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 11 ms
28,104 KB
testcase_01 AC 10 ms
27,984 KB
testcase_02 AC 10 ms
27,856 KB
testcase_03 AC 10 ms
28,112 KB
testcase_04 AC 10 ms
27,980 KB
testcase_05 AC 10 ms
26,028 KB
testcase_06 AC 10 ms
26,024 KB
testcase_07 AC 10 ms
26,024 KB
testcase_08 AC 10 ms
26,020 KB
testcase_09 AC 10 ms
26,148 KB
権限があれば一括ダウンロードができます
コンパイルメッセージ
; 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