結果
| 問題 |
No.2 素因数ゲーム
|
| コンテスト | |
| ユーザー |
pocarist
|
| 提出日時 | 2015-08-31 14:29:17 |
| 言語 | F# (F# 4.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 2,227 bytes |
| コンパイル時間 | 9,424 ms |
| コンパイル使用メモリ | 198,220 KB |
| 実行使用メモリ | 31,744 KB |
| 最終ジャッジ日時 | 2024-07-18 16:49:47 |
| 合計ジャッジ時間 | 13,681 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 20 WA * 11 |
コンパイルメッセージ
復元対象のプロジェクトを決定しています... /home/judge/data/code/main.fsproj を復元しました (269 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/18
open System
let dprintfn fmt = Printf.kprintf Diagnostics.Debug.WriteLine fmt
(*
void Calc::decompositPrime(int n)
{
// 割る数の初期値
a = 2;
// √n ≧ a ( n ≧ a * a ) の間ループ処理
while (n >= a * a) {
// a で割り切れたら、a は素因数
// そして、割られる数を a で割る
// a で割り切れなかったら、 a を 1 増加させる
if (n % a == 0) {
printf("%d * ", a);
n /= a;
} else {
a++;
}
}
// 最後に残った n は素因数
printf("%d\n", n);
}
*)
module Prime =
let decomposit n =
let ans = ref []
let a = ref 2
let tmp = ref n
while !tmp >= !a do
if !tmp % !a = 0 then
ans := !a :: !ans
tmp := !tmp / !a
else
incr a
if !tmp = 1 then !ans
else !tmp :: !ans
let solve m =
let one, two = Map.fold (fun (one,two) k v -> match k with
| 1 -> v%2=0, two
| 2 -> one, v%2=0
| _ -> one, two
) (false, false) m
let ans =
match one, two with
| true, true -> true
| false, false -> true
| true, false -> true
| false, true -> false
if ans then "Alice" else "Bob"
[<EntryPoint>]
let main argv =
let N = Console.ReadLine() |> int
Prime.decomposit N
// |> fun a -> dprintfn "%A" a; a
|> Seq.fold (fun s t ->
match Map.tryFind t s with
| Some v -> Map.add t 2 s
| _ -> Map.add t 1 s
) Map.empty
// |> fun a -> dprintfn "%A" a; a
|> Map.fold (fun s _ v -> v::s) []
// |> fun a -> dprintfn "%A" a; a
|> Seq.fold (fun s t ->
match Map.tryFind t s with
| Some v -> Map.add t (v+1) s
| _ -> Map.add t 1 s
) Map.empty
// |> fun a -> dprintfn "%A" a; a
|> solve
|> printfn "%s"
0
pocarist