結果
問題 | No.1747 Many Formulae 2 |
ユーザー |
![]() |
提出日時 | 2021-11-19 21:36:56 |
言語 | Common Lisp (sbcl 2.5.0) |
結果 |
AC
|
実行時間 | 11 ms / 2,000 ms |
コード長 | 3,789 bytes |
コンパイル時間 | 2,215 ms |
コンパイル使用メモリ | 39,316 KB |
実行使用メモリ | 30,368 KB |
最終ジャッジ日時 | 2024-12-31 22:01:34 |
合計ジャッジ時間 | 2,884 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 19 |
コンパイルメッセージ
; compiling file "/home/judge/data/code/Main.lisp" (written 31 DEC 2024 10:01:31 PM): ; wrote /home/judge/data/code/Main.fasl ; compilation finished in 0:00:00.094
ソースコード
(in-package #:cl-user);;------------------------------Preferences------------------------------(eval-when (:compile-toplevel :load-toplevel :execute)#+swank (declaim (optimize (speed 3) (safety 2)))#-swank (declaim (optimize (speed 3) (safety 0) (debug 0)))#+swank (load "~/ghq/github.com/motoshira/atcoder-submission/ac-tools/act.lisp")#+swank (ql:quickload :prove)#-swank (declaim (sb-ext:muffle-conditions sb-ext:compiler-note))#-swank (sb-ext:disable-debugger)(pushnew :inline-generic-funcion *features*));;---------------------------------Body---------------------------------(in-package #:cl-user);; Functions for prime(declaim (inline prime-factorize-to-list))(defun prime-factorize-to-list (integer);; 素因数分解分解してリストで返す(昇順)(declare ((integer 0) integer))(the list(if (<= integer 1)nil(loopwhile (<= (* f f) integer)with acc list = nilwith f integer = 2do(if (zerop (rem integer f))(progn(push f acc)(setq integer (floor integer f)))(incf f))finally(when (/= integer 1)(push integer acc))(return (reverse acc))))))(declaim (inline prime-p))(defun prime-p (integer)(declare ((integer 1) integer))(if (= integer 1)nil(loopwith f = 2while (<= (* f f) integer)do(when (zerop (rem integer f))(return nil))(incf f)finally(return t))))(defun enumerate-divisor (k)(if (= k 1)(list 1)(labels ((sub (k d acc)(cond((> (* d d)k)(sort acc #'<))((zerop (rem k d))(sub k(1+ d)(if (= (* d d)k)(cons d acc)(cons d(cons (floor k d)acc)))))(t(sub k(1+ d)acc)))))(sub k 1 nil))))(declaim (inline println))(defun println (obj &optional (stream *standard-output*))(let ((*read-default-float-format* 'double-float))(prog1 obj(princ obj stream)(terpri stream))))(defun read-into (count &optional (result-type 'list) (reader #'read))(coerce (loop :repeat count :collect (funcall reader)) result-type))(defun main ()(let ((xs (map 'list #'digit-char-p (read-line))))(println (sb-int:named-let rec ((xs xs)(tmp 0)(acc 0))(if (null xs)(if (prime-p (+ acc tmp))10)(+ (if (or (plusp tmp)(plusp acc))(rec (rest xs)(first xs)(+ tmp acc))0)(rec (rest xs)(+ (* tmp 10)(first xs))acc)))))))#-swank (main)#+swank(defun run ()(let ((*standard-input*(make-string-input-stream(with-output-to-string (*standard-output*)(run-program(merge-pathnames "copy-or-paste" (truename "~/bin/"))'():output *standard-output*)))))(main)))