結果
問題 | No.889 素数! |
ユーザー |
|
提出日時 | 2020-08-05 18:43:40 |
言語 | OCaml (5.2.1) |
結果 |
WA
|
実行時間 | - |
コード長 | 943 bytes |
コンパイル時間 | 402 ms |
コンパイル使用メモリ | 21,444 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-10-09 01:57:00 |
合計ジャッジ時間 | 2,051 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 60 WA * 1 |
ソースコード
let () = let rec primes n m k lst = if n < m then lst else if n mod m = 0 then primes (n/m) m k (m :: lst) else if m = 2 then primes n (m+1) k lst else primes n (m+2) k lst in let rec insert x lst = match lst with | [] -> [(1, x)] | (cnt, num) :: t -> if num = x then (cnt+1, num) :: t else (cnt,num) :: insert x t in let rec separete lst = match lst with | [] -> [] | (a,b) :: t -> a :: separete t in Scanf.scanf "%d\n" @@ fun n -> let lst = primes n 2 n [] in let slst = List.fold_left (fun lst x -> insert x lst) [] lst in Printf.printf "%s\n" (if List.length lst = 0 then string_of_int n else if List.length lst = 1 then "Sosu!" else if List.for_all (fun x -> x mod 2 = 0) (separete slst) then "Heihosu!" else if List.for_all (fun x -> x mod 3 = 0) (separete slst) then "Ripposu!" else if (List.fold_left (+) 0 lst) + 1 = n then "Kanzensu!" else string_of_int n)