ふるつき

記事と内容がないです

ARC002 - うるう年

 二個目。

A: うるう年 - AtCoder Regular Contest 002 | AtCoder

概要

Y(1000 <= Y <= 2999)が与えられるので、西暦Y年がうるう年なら YES 違えば NO を出力せよというもの。

回答

(define (solve)
  (define (uruu? y)
    (if (or (= (modulo y 400) 0)
        (and (= (modulo y 4) 0)
         (not (= (modulo y 100) 0))))
    #t
    #f))
  (let ((y (string->number (read-line))))
    (if (uruu? y)
    (display "YES\n")
    (display "NO\n"))))
(solve)

4で割り切れればうるう年だけど100で割り切れたらうるう年じゃなくてでも400で割り切れたらやっぱりうるう年というのは有名な話。  うるう年判定用に uruu? を書いてる。中身はただのifで #t と #f を返してるので、これは (or ... だけでもいいはず。簡単だったしn回といた問題なのですぐに終わりました。