結果

問題 No.1747 Many Formulae 2
ユーザー motoshira
提出日時 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

ソースコード

diff #
プレゼンテーションモードにする

(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
(loop
while (<= (* f f) integer)
with acc list = nil
with f integer = 2
do
(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
(loop
with f = 2
while (<= (* 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))
1
0)
(+ (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)))
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0