ICPC2012の問題が公開になりました。
http://www.psg.cs.titech.ac.jp/icpc/icpc2012/contest/all_ja.html
というわけでLispで解いてみましょう。
さて、ProblemAですが、こんな感じですかね。
(defun calc-year-day (year) (if (zerop (mod year 3)) (* 20 10) (+ (* 20 5) (* 19 5)))) (defun convert-to-day (year month day) (let ((res 0)) ;;Year (loop for y from 1 to (1- year) do (incf res (calc-year-day y))) ;;Month (if (zerop (mod year 3)) (loop for m from 1 to (1- month) do (incf res 20)) (loop for m from 1 to (1- month) do (incf res (if (evenp m) 19 20)))) ;;Day (incf res day) res)) (defvar *mirenium-aniv-day* (conver-to-day 1000 1 1)) (defun main () (let ((n (read))) (loop for i from 1 upto n do (format t "~A~%" (- *mirenium-aniv-day* (convert-to-day (read) (read) (read)))))))
とりあえず、サンプルインプットには正解が出力されますね。
こういう簡単な入出力ができたり、少々何も考えないコードでも読みやすく
書けるところがLispの良いところですなぁ...