Problem:
整数の和 II

0 から 100 の数字から異なる n 個の数を取り出して合計が s となる組み合わせの数を出力するプログラムを作成してください。n 個の数はおのおの 0 から 100 までとし、１つの組み合わせに同じ数字は使えません。たとえば、n が 3 で s が6 のとき、3 個の数字の合計が 6 になる組み合わせは、

1 + 2 + 3 = 6
0 + 1 + 5 = 6
0 + 2 + 4 = 6

の 3 通りとなります。

Input

複数のデータセットが与えられます。各データセットに n ( 1 ≤ n ≤ 9 ) と s ( 0 ≤ s ≤ 1000 ) が１つのスペースで区切られて１行に与えられます。n と s が共に 0 のとき入力の最後とします。

データセットの数は 50 を超えません。

Output

各データセットに対して、n 個の整数の和が s になる組み合わせの数を１行に出力して下さい。

組み合わせの数が 1010を超える入力は与えられません。

Sample Input

3 6
3 1
0 0

Output for the Sample Input

3
0

Solution in JAVA (judge verdict: Runtime Error)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;


public class Main {
	private	static	BufferedReader	br = null;

	static {
		br = new BufferedReader(new InputStreamReader(System.in));
	}
 
    /**
     * @param args
     */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[]			num = null;
		int[]			max = new int[2];
		Stack<int[]>	stk = new Stack<int[]>();

		while((num = parseNum()) != null) {
			max[0] = Math.max(max[0], num[0]);
			max[1] = Math.max(max[1], num[1]);
			stk.push(num);
		}

		if (stk.size() > 0) {
			int[][]	np = new int[max[0]+2][100*max[0]+1];
			np[0][0] = 1;

			for(int i = 0; i <= 100; i++){
				for(int j = max[0]; j >= 0; j--){
					for(int k = 0;k + i <= 100*max[0]; k++){
						np[j + 1][k + i] += np[j][k];
					}
				}
			}

			for (int i = 0; i < stk.size(); i++) {
				int[]	tmp = stk.get(i);
	            System.out.println(np[tmp[0]][tmp[1]]);
			}
		}
	}

	private static int[] parseNum() {
		int[]	param = null;
		String	strin = null;

		if ((strin = parseStdin()) != null) {
			String[]	lines = strin.split(" ");

			param    = new int[2];
			param[0] = Integer.parseInt(lines[0]);
			param[1] = Integer.parseInt(lines[1]);

			if (param[0] == 0 && param[1] == 0) {
				param = null;
			}
		}
 
		return param;
	}

	private static String parseStdin() {
        String  stdin = null;
        
        try {
        	String  tmp = br.readLine();
        	if (tmp != null) {
            	if (!tmp.isEmpty()) {
            		stdin = tmp;
            	}
        	}
        }
        catch (IOException e) {}
 
        return stdin;
	}
}