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 C (GCC 5.4.1) (judge verdict: Accepted)

#include<stdio.h>

int gcd(int n,int m){
  if(n<m)return gcd(m,n);
  if(m==0)return n;
  return gcd(m,n%m);
}

#define lcm(a,b) ((a)*(b)/gcd((a),(b)))

int main (void){
  int r,g,b,n;
  scanf("%d %d %d %d",&r,&g,&b,&n);

  int r_max,ans=0;
  r_max=n/r;

  int i,j,nn,del;
  del=gcd(g,b);
  g/=del; b/=del;
  nn=n+r;
  for(i=0;i<=r_max;i++){
    nn=n-r*i;
    if(nn%del) continue;
    nn/=del;
    j=0;
    while(nn%b){
      nn-=g;
    }
    if(nn>=0)    ans+=(nn/b/g+1);
    //    printf("i:%d %d\n",i, ans);
  }
    

  printf("%d",ans);
  return 0;
}