Advertisement
Guest User

Silnie

a guest
Jan 17th, 2020
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
OCaml 0.56 KB | None | 0 0
  1. let factorial_array n =
  2.   let fac_lst = ref [] in
  3.   let i = ref 1 in
  4.   let s = ref 1 in
  5.   while !s <= n do
  6.     s := !s * !i;
  7.     i := !i + 1;
  8.     fac_lst := !s :: !fac_lst
  9.   done;
  10.   Array.of_list (List.rev !fac_lst)
  11.  
  12. let silnie n =
  13.   let factorials = factorial_array n in
  14.   let output = ref [] in
  15.   let x = ref n in
  16.   let i = ref (Array.length factorials - 1) in
  17.   while !x <> 0 do
  18.     if !x >= factorials.(!i) then begin
  19.       output := (!i+1) :: !output;
  20.       x := !x - factorials.(!i)
  21.     end else begin
  22.       i := !i - 1
  23.     end
  24.   done;
  25.   !output
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement