結果
問題 | No.14 最小公倍数ソート |
ユーザー | pocarist |
提出日時 | 2015-10-07 13:09:59 |
言語 | F# (F# 4.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,893 bytes |
コンパイル時間 | 11,863 ms |
コンパイル使用メモリ | 202,004 KB |
実行使用メモリ | 59,264 KB |
最終ジャッジ日時 | 2024-07-20 01:52:09 |
合計ジャッジ時間 | 16,946 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 102 ms
36,480 KB |
testcase_01 | AC | 105 ms
32,896 KB |
testcase_02 | AC | 110 ms
33,024 KB |
testcase_03 | AC | 2,307 ms
59,264 KB |
testcase_04 | TLE | - |
testcase_05 | -- | - |
testcase_06 | -- | - |
testcase_07 | -- | - |
testcase_08 | -- | - |
testcase_09 | -- | - |
testcase_10 | -- | - |
testcase_11 | -- | - |
testcase_12 | -- | - |
testcase_13 | -- | - |
testcase_14 | -- | - |
testcase_15 | -- | - |
testcase_16 | -- | - |
testcase_17 | -- | - |
testcase_18 | -- | - |
testcase_19 | -- | - |
コンパイルメッセージ
復元対象のプロジェクトを決定しています... /home/judge/data/code/main.fsproj を復元しました (320 ms)。 MSBuild のバージョン 17.9.6+a4ecab324 (.NET) main -> /home/judge/data/code/bin/Release/net8.0/main.dll main -> /home/judge/data/code/bin/Release/net8.0/publish/
ソースコード
// http://yukicoder.me/problems/38 open System open System.Collections.Generic let dpfn fmt = Printf.kprintf Diagnostics.Debug.WriteLine fmt let factors n = let i = ref 2 let tmp = ref n seq { while !i * !i <= n do if !tmp % !i = 0 then tmp := !tmp / !i yield !i else incr i if !tmp <> 1 then yield !tmp } [<EntryPoint>] let main argv = let add k m = match Map.tryFind k m with | None -> 0 | Some x -> x |> fun v -> Map.add k (v+1) m let merge a b = Map.fold (fun a' bk bv -> match Map.tryFind bk a' with | None -> Map.add bk bv a' | Some av -> Map.add bk (max av bv) a' ) a b let pow (a : int) b = bigint.Pow(bigint a, b) let lcm a b = merge a b |> Map.fold (fun s k v -> s * pow k v) 1I let lcmsort xs = let rec f acc = function | [] -> List.rev acc | (a,m) :: ax -> let ax' = ax |> List.map (fun (i,j) -> lcm m j, i, j) |> List.sort // |> fun x -> x |> List.map (fun (k,i,j) -> string (k,i,j)) |> String.concat " " |> dpfn "%s"; x |> List.map (fun (_,i,j) -> i,j) f (a :: acc) ax' f [] xs let N = Console.ReadLine().Trim() |> int let A = Console.ReadLine().Trim().Split([|' '|]) |> Array.map int A |> List.ofArray |> List.map (fun a -> a, factors a) // |> fun x -> dpfn "%A" x; x |> List.map (fun (a,fs) -> a, fs |> Seq.fold (fun m t -> add t m) Map.empty) // |> fun x -> dpfn "%A" x; x |> lcmsort |> List.map string |> String.concat " " |> printfn "%s" 0 // 整数の終了コードを返します