結果
問題 | No.917 Make One With GCD |
ユーザー | sansaqua |
提出日時 | 2020-11-15 09:06:22 |
言語 | Common Lisp (sbcl 2.3.8) |
結果 |
AC
|
実行時間 | 9 ms / 2,000 ms |
コード長 | 3,471 bytes |
コンパイル時間 | 300 ms |
コンパイル使用メモリ | 32,640 KB |
実行使用メモリ | 24,660 KB |
最終ジャッジ日時 | 2023-09-30 06:46:30 |
合計ジャッジ時間 | 1,448 ms |
ジャッジサーバーID (参考情報) |
judge14 / judge11 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 8 ms
24,424 KB |
testcase_01 | AC | 7 ms
23,356 KB |
testcase_02 | AC | 7 ms
23,356 KB |
testcase_03 | AC | 7 ms
23,700 KB |
testcase_04 | AC | 8 ms
23,652 KB |
testcase_05 | AC | 7 ms
24,244 KB |
testcase_06 | AC | 7 ms
24,532 KB |
testcase_07 | AC | 7 ms
24,452 KB |
testcase_08 | AC | 7 ms
23,488 KB |
testcase_09 | AC | 9 ms
24,628 KB |
testcase_10 | AC | 8 ms
24,660 KB |
testcase_11 | AC | 8 ms
24,556 KB |
testcase_12 | AC | 8 ms
24,512 KB |
testcase_13 | AC | 7 ms
24,308 KB |
testcase_14 | AC | 8 ms
24,460 KB |
testcase_15 | AC | 7 ms
24,388 KB |
testcase_16 | AC | 7 ms
24,260 KB |
testcase_17 | AC | 6 ms
23,536 KB |
testcase_18 | AC | 7 ms
24,144 KB |
testcase_19 | AC | 6 ms
23,328 KB |
testcase_20 | AC | 7 ms
23,672 KB |
testcase_21 | AC | 6 ms
24,004 KB |
testcase_22 | AC | 6 ms
23,796 KB |
testcase_23 | AC | 7 ms
24,376 KB |
testcase_24 | AC | 7 ms
24,016 KB |
testcase_25 | AC | 6 ms
24,464 KB |
testcase_26 | AC | 6 ms
23,464 KB |
testcase_27 | AC | 6 ms
23,324 KB |
testcase_28 | AC | 6 ms
23,420 KB |
testcase_29 | AC | 6 ms
23,320 KB |
testcase_30 | AC | 6 ms
23,560 KB |
testcase_31 | AC | 5 ms
23,380 KB |
testcase_32 | AC | 6 ms
23,332 KB |
testcase_33 | AC | 5 ms
23,396 KB |
testcase_34 | AC | 7 ms
23,340 KB |
testcase_35 | AC | 6 ms
23,368 KB |
コンパイルメッセージ
; compiling file "/home/judge/data/code/Main.lisp" (written 30 SEP 2023 06:46:28 AM): ; processing (IN-PACKAGE :CL-USER) ; processing (DEFPARAMETER *OPT* ...) ; processing (SET-DISPATCH-MACRO-CHARACTER #\# ...) ; processing (DEFINE-INT-TYPES 2 ...) ; processing (DEFCONSTANT +MOD+ ...) ; processing (DEFMACRO DBG ...) ; processing (DECLAIM (INLINE PRINTLN)) ; processing (DEFUN PRINTLN ...) ; processing (IN-PACKAGE :CL-USER) ; processing (DEFUN MAIN ...) ; file: /home/judge/data/code/Main.lisp ; in: DEFUN MAIN ; (INCF RES (GETHASH 1 (AREF DP X) 0)) ; --> SETQ THE ; ==> ; (+ (GETHASH 1 (AREF DP X) 0) RES) ; ; note: unable to ; open-code float conversion in mixed numeric operation ; due to type uncertainty: ; The first argument is a NUMBER, not a RATIONAL. ; The second argument is a NUMBER, not a FLOAT. ; ; note: unable to ; open-code float conversion in mixed numeric operation ; due to type uncertainty: ; The first argument is a NUMBER, not a FLOAT. ; The second argument is a NUMBER, not a RATIONAL. ; ; note: unable to ; open-code float conversion in mixed numeric operation ; due to type uncertainty: ; The first argument is a NUMBER, not a RATIONAL. ; The second argument is a NUMBER, not a (OR (COMPLEX SINGLE-FLOAT) ; (COMPLEX DOUBLE-FLOAT)). ; ; note: unable to ; open-code float conversion in mixed numeric operation ; due to type uncertainty: ; The first argument is a NUMBER, not a (OR (COMPLEX SINGLE-FLOAT) ; (COMPLEX DOUBLE-FLOAT)). ; The second argument is a NUMBER, not a RATIONAL. ; ; note: unable to ; open-code float conversion in mixed numeric operation ; due to type uncertainty: ; The first argument is a NUMBER, not a SINGLE-FLOAT. ; The second argument is a NUMBER, not a DOUBLE-FLOAT. ; ; note: unable to ; open-code float conversion in mixed numeric operation ; due to type uncertainty: ; The first argument is a NUMBER, not a DO
ソースコード
(in-package :cl-user) (eval-when (:compile-toplevel :load-toplevel :execute) (defparameter *opt* #+swank '(optimize (speed 3) (safety 2)) #-swank '(optimize (speed 3) (safety 0) (debug 0))) #+swank (ql:quickload '(:cl-debug-print :fiveam :cp/util) :silent t) #+swank (use-package :cp/util :cl-user) #-swank (set-dispatch-macro-character #\# #\> (lambda (s c p) (declare (ignore c p)) `(values ,(read s nil nil t))))) #+swank (set-dispatch-macro-character #\# #\> #'cl-debug-print:debug-print-reader) (macrolet ((def (b) `(progn (deftype ,(intern (format nil "UINT~A" b)) () '(unsigned-byte ,b)) (deftype ,(intern (format nil "INT~A" b)) () '(signed-byte ,b)))) (define-int-types (&rest bits) `(progn ,@(mapcar (lambda (b) `(def ,b)) bits)))) (define-int-types 2 4 7 8 15 16 31 32 62 63 64)) (defconstant +mod+ 1000000007) (defmacro dbg (&rest forms) #+swank (if (= (length forms) 1) `(format *error-output* "~A => ~A~%" ',(car forms) ,(car forms)) `(format *error-output* "~A => ~A~%" ',forms `(,,@forms))) #-swank (declare (ignore forms))) (declaim (inline println)) (defun println (obj &optional (stream *standard-output*)) (let ((*read-default-float-format* 'double-float)) (prog1 (princ obj stream) (terpri stream)))) ;; BEGIN_INSERTED_CONTENTS ;; BEGIN_USE_PACKAGE (in-package :cl-user) ;;; ;;; Body ;;; (defun main () (declare #.*opt*) (let* ((n (read)) (as (make-array n :element-type 'uint31 :initial-element 0)) (dp (make-array n :element-type 'hash-table))) (dotimes (i n) (setf (aref as i) (read) (aref dp i) (make-hash-table :size 1000 :test #'eq))) (dotimes (x n) (let ((a (aref as x))) (incf (gethash a (aref dp x) 0)) (loop for dest from (+ x 1) below n do (maphash (lambda (div num) (declare (uint62 div num)) (let ((gcd (gcd div (aref as dest)))) (incf (gethash gcd (aref dp dest) 0) num))) (aref dp x))))) (let ((res 0)) (dotimes (x n) (incf res (gethash 1 (aref dp x) 0))) (println res)))) #-swank (main) ;;; ;;; Test and benchmark ;;; #+swank (progn (defparameter *lisp-file-pathname* (uiop:current-lisp-file-pathname)) (setq *default-pathname-defaults* (uiop:pathname-directory-pathname *lisp-file-pathname*)) (defparameter *dat-pathname* (uiop:merge-pathnames* "test.dat" *lisp-file-pathname*)) (defparameter *problem-url* "https://yukicoder.me/problems/no/917")) #+swank (defun gen-dat () (uiop:with-output-file (out *dat-pathname* :if-exists :supersede) (format out ""))) #+swank (defun bench (&optional (out (make-broadcast-stream))) (time (run *dat-pathname* out))) #-swank (eval-when (:compile-toplevel) (when (or (> sb-c::*compiler-warning-count* 0) sb-c::*undefined-warnings*) (error "count: ~D, undefined warnings: ~A" sb-c::*compiler-warning-count* sb-c::*undefined-warnings*))) ;; To run: (5am:run! :sample) #+swank (5am:test :sample (5am:is (equal "5 " (run "3 1 2 3 " nil))) (5am:is (equal "15 " (run "4 1 1 1 1 " nil))) (5am:is (equal "0 " (run "4 2 4 8 16 " nil))) (5am:is (equal "763 " (run "10 801754 703742 332182 68016 914814 8470 937255 293192 313080 501971 " nil))))