小强今天体检,其中有一个环节是测视力
小强看到的视力表是一张
的表格,但是由于小强视力太差,他无法看清表格中的符号。不过热爱数学的他给自己出了这样一个问题:假设现在有a个向上的符号,b个向下的符号,c个向左的符号,d个向右的符号,把这些符号填到视力表中,总共有多少种可能的情况呢?
第一行输入五个数N, a, b, c, d保证
输出一个数字,表示答案由于结果可能很大,只需输出对998244353取模之后的结果即可
2 3 1 0 0
4
共有如下四种情况上上 上上上下 下上上下 下上上上 上上
2 2 1 1 0
12
2 1 1 1 1
24
数据保证,且
对于的数据,N = 2
对于的数据,
对于的数据,
对于的数据,
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.Arrays;
public class Main {
static int mod = 998244353;
public static void main(String[] args) throws InterruptedException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] s = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
int N = s[0];
int a = s[1];
int b = s[2];
int c = s[3];
BigInteger t = cal(N * N - a - b - c + 1, N * N);
BigInteger ka = cal(1, a);
BigInteger kb = cal(1, b);
BigInteger kc = cal(1, c);
t = t.divide(ka.multiply(kb.multiply(kc)));
t = t.mod(new BigInteger(mod + ""));
System.out.println(t.toString());
}
public static BigInteger cal(int a, int b) {
BigInteger t = new BigInteger(1 + "");
for (int i = a; i <= b; i++) {
t = t.multiply(new BigInteger(i + ""));
}
return t;
}
}