※ 1과 2를 항상 포함하기 때문에 1은 무조건 2번째 자리 이상에 가야한다.
※ 홀수는 무조건 짝수 번 째 자리에 와야 한다. (훌수 * 홀수 = 홀수, 홀수 * 짝수 = 짝수)
※ n이 홀수라면 홀수가 무조건 홀수 자리에 들어갈 수 밖에 없어 최대공약수가 존재하지 않는다.
1. n이 짝수 일 때 홀수의 수 = n/2 순서를 고려하여 n/2 개의 홀수를 뽑는 경우의 수 (n/2) !
2. 짝수의 수 = n/2 경우의 수 (n/2)!
3. (n/2)! * 2 % 998244353
4. 998244353을 넘어가면 %998244353을 해준다(마지막 결과에도 적용해줘야함 998244353을 넘어갈 수 있음)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.StringTokenizer;
public class Main {
static long[] dp;
public static void main(String arg[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
dp = new long[501];
dp[0] = 0;
dp[1] = 1;
while(T --> 0) {
int n = Integer.parseInt(br.readLine());
long gcd = fac(n/2);
if(n%2 == 0)
System.out.println((gcd * gcd) % 998244353);
else
System.out.println(0);
}
}
static long fac(int n) {
if(n <= 1)
return n;
if(dp[n] != 0)
return dp[n];
return dp[n] = (n * fac(n-1)) % 998244353;
}
}
'코드포스' 카테고리의 다른 글
[April Fools Day Contest 2022] A. Who Tested? (0) | 2022.04.06 |
---|---|
[Codeforces Round #780 (Div. 3)] C. Get an Even String (0) | 2022.04.04 |
[Codeforces Round #779 (Div. 2)] C. Shinju and the Lost Permutation (0) | 2022.03.30 |
[CodeTON Round 1] B. Subtract Operation (0) | 2022.03.30 |
[CodeTON Round 1] C. Make Equal With Mod (0) | 2022.03.27 |