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: Time Limit Exceeded)


import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		//Input
		Scanner sc = new Scanner(System.in);
		int R = Integer.parseInt(sc.next());
		int G = Integer.parseInt(sc.next());
		int B = Integer.parseInt(sc.next());
		int N = Integer.parseInt(sc.next());
		sc.close();

		//Logic
		ArrayList<Integer> list = new ArrayList<>();
		list.add(R);
		list.add(G);
		list.add(B);
		Collections.sort(list);

		R = list.get(0);
		G = list.get(1);
		B = list.get(2);

		int answer = 0;
		for (int r = 0 ; r <= N/R ; r++) {
			if(r * R > N) {
				break;
			}
			else
			{
				for (int g = 0 ; g <= N/G ; g++) {
					if(r * R + g * G > N) {
						continue;
					}
					else
					{
						for (int b = 0 ; b <= N/B ; b++) {
							if(r * R + g * G + b * B > N) {
								continue;
							}
							if(r * R + g * G + b * B == N) {
								answer++;
							}
						}
					}
				}
			}
		}

		//Output
		System.out.println(answer);
	}
}