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 Java7 (OpenJDK 1.7.0) (judge verdict: Time Limit Exceeded)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;

public class Main {

    public static void main(String[] args) {

        InputStreamReader isr = new InputStreamReader(System.in);
        BufferedReader br = new BufferedReader(isr);
        PrintWriter out = new PrintWriter(System.out);


		int cnt = 0;
        try {


    		String str = br.readLine();
    		String [] strArr = str.split(" ");

    		int intR = Integer.parseInt(strArr[0]);
    		int intG = Integer.parseInt(strArr[1]);
    		int intB = Integer.parseInt(strArr[2]);
    		int intN = Integer.parseInt(strArr[3]);

    		for (int r = 0 ; true ; r++) {

    			int sumr = intR * r;
    			if (sumr > intN) break;

    			for (int g = 0 ; true ; g++) {

        			int sumg = intR * r + intG * g;
        			if (sumg  > intN) break;

        			for (int b = 0 ; true ; b++) {
            			int sum = intR * r + intG * g + intB * b;
            			if (sum > intN) break;
            			if (sum == intN) cnt ++;
            		}
        		}
    		}

//        		System.out.println(intR + "/" + intG + "/" + intB + "/" + intN);
       		System.out.println(cnt);

            out.flush();


        } catch (IOException e) {

        }


    }

}