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.Scanner;
import java.util.InputMismatchException;

class Main {
   public static void main(String args[]) {
      int x=0 ,y=0, z=0, n=0;
      int sum = 0;
      int nokori;
      int r, g, b;
      int i,j,k;
      int count=0;
      int tempj, tempk;
      try {
         Scanner scanner = new Scanner(System.in);
         x = scanner.nextInt();
         y = scanner.nextInt();
         z = scanner.nextInt();
         n = scanner.nextInt();
         scanner.close();
      } catch (InputMismatchException e) {
         System.out.println("error");
      }
      r = n/x;
      g = n/y;
      b = n/z;
      for (i=0; i<r+1; i++) {
         sum = x*i;
         //nokori = n-sum;
         tempj = sum;
         for (j=0; j<g+1; j++) {
            sum = sum + j*y;
            if (sum>n) {
               sum = tempj;
               continue;
            }
            tempk = sum;
            for (k=0; k<b+1; k++) {
               sum = sum + k*z;
               if (sum == n) {
                  count++;
                  //System.out.println(i + "," + j + "," + k);
               }
               sum = tempk;
            }
            sum = tempj;
         }
         sum = 0;
      }
      System.out.println(count);
   }
}