Problem:
Combination of Number Sequences

0 から 9 までの整数を使った n 個の数の並び k1, k2, ..., kn を考えます。正の整数 n と s を読み込んで、

k1 + 2 × k2 + 3 × k3 + ... + n × kn = s

となっているような n 個の数の並びが何通りあるかを出力するプログラムを作成してください。ただし、1 つの「n 個の数の並び」には同じ数が 2 回以上現われないものとします。

Input

入力は複数のデータセットからなります。各データセットとして、n (1 ≤ n ≤ 10) と s (0 ≤ s ≤ 10,000)が空白区切りで１行に与えられます。

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

Output

データセットごとに、n 個の整数の和が s になる組み合わせの個数を１行に出力します。

Sample Input

3 10
3 1

Output for the Sample Input

8
0

Solution in JAVA (judge verdict: Time Limit Exceeded)


import java.util.*;
import static java.lang.Math.*;
import static java.util.Arrays.*;

public class Main {

	int INF = 1 << 28;
	int cnt;
	void run() {
		Scanner sc = new Scanner(System.in);
		for(;sc.hasNext();) {
			int n = sc.nextInt();
			int s = sc.nextInt();
			boolean used[] = new boolean[10];
			fill(used, false);
			cnt = 0;
			serach(0,n,0,s,used);
			System.out.println(cnt);
		}
	}
	
	void serach(int i, int n, int s, int sum, boolean[] used) {
//		System.out.println(s + " " + sum);
		if( s > sum ) return;
		if( i == n ) {
			if( s == sum ) cnt++;
		}
		else {
			for(int j=0;j<10;j++) {
				if(!used[j]) {
					used[j] = true;
					serach(i+1, n, s+j*(i+1), sum, used);
					used[j] = false;
				}
			}
		}
	}

	public static void main(String[] args) {
		new Main().run();
	}

	void debug(Object... os) {
		System.err.println(Arrays.deepToString(os));
	}
}