結果
| 問題 |
No.2795 Perfect Number
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2024-07-21 01:24:07 |
| 言語 | Common Lisp (sbcl 2.5.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 637 bytes |
| コンパイル時間 | 128 ms |
| コンパイル使用メモリ | 27,904 KB |
| 実行使用メモリ | 32,768 KB |
| 最終ジャッジ日時 | 2024-07-21 01:24:14 |
| 合計ジャッジ時間 | 6,678 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | TLE * 1 -- * 2 |
| other | -- * 35 |
コンパイルメッセージ
; compiling file "/home/judge/data/code/Main.lisp" (written 21 JUL 2024 01:24:06 AM): ; file: /home/judge/data/code/Main.lisp ; in: DEFUN MAIN ; (IF (SOME (LAMBDA (X) (= X LIMIT)) (GENERATE-PERFECT-NUMBERS LIMIT)) ; (FORMAT T "Yes~%") ; (FORMAT T "No~%")) ; ; note: deleting unreachable code ; ; compilation unit finished ; printed 1 note ; wrote /home/judge/data/code/Main.fasl ; compilation finished in 0:00:00.008
ソースコード
(defun is-mersenne-prime (p)
(let ((mp (1- (expt 2 p))))
(loop for i from 2 to (isqrt mp) never (zerop (mod mp i)))))
(defun generate-perfect-numbers (limit)
(let ((perfect-numbers '()))
(loop for p from 2 do
(when (is-mersenne-prime p)
(let ((perfect-num (* (1- (expt 2 p)) (expt 2 (1- p)))))
(when (<= perfect-num limit)
(push perfect-num perfect-numbers)))))
(nreverse perfect-numbers)))
(defun main ()
(let ((limit (read)))
(if (some (lambda (x) (= x limit)) (generate-perfect-numbers limit))
(format t "Yes~%")
(format t "No~%"))))
(main)