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 Java8 (OpenJDK 1.8.0) (judge verdict: Accepted)

import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Scanner;

public class Main {
	
	public static void main(String[] args)
	{
		new Main().run();
	}
	
	public void run()
	{
		Scanner file = new Scanner(System.in);
		int R = file.nextInt();
		int G = file.nextInt();
		int B = file.nextInt();
		int[] ints = new int[]{R,G,B};
		int N = file.nextInt();
		int[][] dp = new int[4][N+1];
		dp[0][0] = 1;
		for(int i = 1;i<dp.length;i++)
		{
			for(int j = 0;j<dp[i].length;j++)
			{
				dp[i][j] = dp[i-1][j];
				if(ints[i-1]<=j)
					dp[i][j] += dp[i][j-ints[i-1]];
			}
		}
		System.out.println(dp[3][N]);
	}
	
}