728x90
※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다.
728x90
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Solution {
static final long MOD = 1_234_567_891;
private static long fact(long start, long end) {
long result = 1;
for (long i = start; i <= end; i++) {
result = (result * i) % MOD;
}
return result;
}
private static long pow(long num, long e) {
if(e == 0 || e == 1) {
return num;
}
long tmp = pow(num, e / 2);
long result = (tmp * tmp) % MOD;
if((e & 1) == 1) result = (result * num) % MOD;
return result;
}
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
StringBuilder sb = new StringBuilder();
int T = Integer.parseInt(br.readLine());
for (int tc = 1; tc <= T; tc++) {
st = new StringTokenizer(br.readLine());
long N = Long.parseLong(st.nextToken());
long R = Long.parseLong(st.nextToken());
// (N! / (N - R)!) % MOD 구하기
long result = fact(N - R + 1, N);
// R! % MOD의 역원 구하기
long div = pow(fact(2, R), MOD - 2);
// 두 연산 곱
result = (result * div) % MOD;
sb.append("#" + tc + " " + result + "\n");
}
System.out.println(sb);
}
}
728x90
'Problem Solving > SWEA' 카테고리의 다른 글
[SW Expert Academy, SWEA 1248] [S/W 문제해결 응용] 3일차 - 공통조상 (java) (0) | 2023.04.09 |
---|---|
[SW Expert Academy, SWEA 1231] [S/W 문제해결 기본] 9일차 - 중위순회 (java) (0) | 2023.04.09 |
[SW Expert Academy, SWEA 4014] [모의 SW 역량테스트] 활주로 건설 (java) (0) | 2023.04.07 |
[SW Expert Academy, SWEA 5643] [Professional] 키 순서 (java) (0) | 2023.04.04 |
[SW Expert Academy, SWEA 1263] [S/W 문제해결 응용] 8일차 - 사람 네트워크2 (java) (0) | 2023.04.03 |