Problem:
Score : 200 points

Problem Statement

Snuke has come to a store that sells boxes containing balls. The store sells the following three kinds of boxes:

Red boxes, each containing R red balls

Green boxes, each containing G green balls

Blue boxes, each containing B blue balls

Snuke wants to get a total of exactly N balls by buying r red boxes, g green boxes and b blue boxes.
How many triples of non-negative integers (r,g,b) achieve this?

Constraints

All values in input are integers.

1 \leq R,G,B,N \leq 3000

Input

Input is given from Standard Input in the following format:

R G B N

Output

Print the answer.

Sample Input 1

1 2 3 4

Sample Output 1

4

Four triples achieve the objective, as follows:

(4,0,0)

(2,1,0)

(1,0,1)

(0,2,0)

Sample Input 2

13 1 4 3000

Sample Output 2

87058

Solution in OCaml (4.02.3) (judge verdict: Accepted)

(* O(n^2) *)
let solve r g b n =
  let rec find_g acc g0 m =
    if g0 * g > m then
      acc
    else
      find_g 
        (acc + if (m - g0 * g) mod b = 0 then 1 else 0)
        (g0 + 1)
        m in
  let rec count acc r0 =
    if r0 * r > n then
      acc
    else
      count (find_g acc 0 (n - r0 * r)) (r0 + 1)
  in
    count 0 0

let read_ints () = read_line () |> Str.split (Str.regexp " ") |> List.map int_of_string

let _ =
  match read_ints () with
  | [r; g; b; n] -> solve r g b n |> string_of_int |> print_endline
  | _ -> assert false