Submission #1454518


Source Code Expand

module IntMap = Map.Make (struct
  type t = int
  let compare = compare
end)

let rec foldn f init = function
  | 0 -> init
  | n -> foldn f (f init) (n - 1)

let rec gcd n m =
  if m = 0 then n
  else gcd m (n mod m)

let () =
  let n, d = Scanf.scanf "%d %d" (fun n d -> n, d) in
  foldn (fun m ->
    IntMap.fold (fun n p m ->
      List.fold_left (fun m d ->
        let n' = n / gcd n d in
        IntMap.add n'
          (p /. 6. +.
           try IntMap.find n' m with Not_found -> 0.) m) m [1; 2; 3; 4; 5; 6]) m IntMap.empty) (IntMap.singleton d 1.) n
  |> (fun m -> try IntMap.find 1 m with Not_found -> 0.)
  |> Printf.printf "%f\n"

Submission Info

Submission Time
Task D - サイコロ
User fetburner
Language OCaml (4.02.3)
Score 4
Code Size 665 Byte
Status AC
Exec Time 163 ms
Memory 4864 KB

Judge Result

Set Name All
Score / Max Score 4 / 4
Status
AC × 13
Set Name Test Cases
All 00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 90, 91
Case Name Status Exec Time Memory
00 AC 4 ms 2560 KB
01 AC 117 ms 3072 KB
02 AC 38 ms 2816 KB
03 AC 44 ms 3200 KB
04 AC 19 ms 2944 KB
05 AC 163 ms 3200 KB
06 AC 112 ms 3200 KB
07 AC 49 ms 2944 KB
08 AC 19 ms 4864 KB
09 AC 9 ms 2560 KB
10 AC 2 ms 1152 KB
90 AC 1 ms 384 KB
91 AC 1 ms 384 KB