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 Go (1.6) (judge verdict: Wrong Answer)

package main

import (
	"fmt"
	"io"
	"os"
)

func answer(reader io.Reader, writer io.Writer) {
	var x, y, r, g, b, n int
	_, _ = fmt.Fscan(reader, &r)
	_, _ = fmt.Fscan(reader, &g)
	_, _ = fmt.Fscan(reader, &b)
	_, _ = fmt.Fscan(reader, &n)
	count := 0
	x = n / r
	for i:=x;i>=0;i-- {
		if i*r == n {
			count++
			//_, _ = fmt.Printf("%d: %d, 0, 0\n", count, i)
		} else {
			y = (n-i*r) / g
			for j:=y;j>=0;j-- {
				if i*r + j*g == n {
					count++
					//_, _ = fmt.Printf("%d: %d, %d, 0\n", count, i, j)
				} else {
					if (n-i*r-j*g) % b == 0 {
						count++
						//_, _ = fmt.Printf("%d: %d, %d, %d\n", count, i, j,(n-i*r-j*g)/b)
					}
				}
			}

		}
	}

	_, _ = fmt.Printf("%d\n", count)
	_, _ = fmt.Fprintf(writer, "%d", count)
}

func main() {
	answer(os.Stdin, os.Stdout)
}