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: Wrong Answer)

import java.util.Scanner;

class Main {

	public static void main(String[] args){
		
	    int[][] allData = new int[10][1001];

	    allData[0][0] = 1;

	    for (int iRang = 0; iRang <= 100; iRang++){
	        for (int iSum = 1000; iSum >= 0; iSum--){
	            for (int item = 9; item >= 1; item--){
	                if (iSum - iRang >= 0) allData[item][iSum] += allData[item - 1][iSum - iRang];
	            }
	        }
	    }

	    Scanner input = new Scanner(System.in);
	    while (input.hasNext()){
	    	String[] nAnds = input.nextLine().split(" ");
	    	int valueN = Integer.parseInt(nAnds[0]);
	    	int valueS = Integer.parseInt(nAnds[1]);
	    	if(valueN != 0 || valueS != 0){
	    		System.out.printf("%d\n", allData[valueN][valueS]);
	    	} else {
	    		break;
	    	}
	    }

	    input.close();
	}
}