読者です 読者をやめる 読者になる 読者になる

Let's write β

趣味で書いたこととか、RustとLispが好き

JAG2010ProblemA

Lisp ICPC

Sum of Consecutive

(defun iota (num)
  (loop for n from 1 upto num
       collect n))
(defun get-all-pattern (num)
  (let ((seq (iota (1+ (floor num 2)))))
    (loop for pat in
	 (loop for i from 0 upto (1- (length seq))
	    append
	      (loop for j from (+ 2 i) upto (length seq)
		 collect (subseq seq i j)))
       count (= num (apply #'+ pat)))))


(defun main ()
  (loop for num = (read)
       until (zerop num)
       do
       (format t "~A~%" (get-all-pattern num))))

可能性がある最大値を決定して、それまでの全部分リストにたいして検索。

僕が働いているAzit.incでは一緒に働けるエンジニアを募集しています!
採用情報 — 株式会社アジット|Azit Inc.