728x90
반응형
페르마의 소정리 : a^p-2 = a^-1 ( p는 MOD, a는 r!(n-r)! )
풀이 :
이항계수로 풀 수 없고, MOD연산은 나눗셈에는 적용 못함.
때문에 분모에 있는 a를 a^-1로 바꾼 뒤, 페르마 소정리 이용
Code
public class Solution5607 {
static long MOD = 1234567891;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
for (int tc = 1; tc <= T; tc++) {
int N = sc.nextInt();
int R = sc.nextInt();
long[] factorial = new long[N + 1];
factorial[0] = 1;
for (int i = 1; i <= N; i++) { // 팩토리얼 설정
factorial[i] = (factorial[i - 1] * i) % MOD;
}
long top = factorial[N];
long bottom = (factorial[R] * factorial[N - R]) % MOD;
long rebottom = calculatePow(bottom, MOD - 2);
long result = top * rebottom % MOD;
System.out.println("#" + tc + " " + result);
}
}
//분할 정복으로 해결
private static long calculatePow(long N, long R) {
if (R == 1) {
return N;
}
long x = calculatePow(N, R / 2);
if (R % 2 == 0) {
return (x * x) % MOD;
} else return ((x * x) % MOD * N) % MOD;
}
}
728x90
반응형
'SWEA' 카테고리의 다른 글
swea 6190 [D3] 정곤이의 단조 증가하는 수 JAVA (1) | 2023.11.29 |
---|---|
swea 5948 [D3] 새샘이의 7-3-5 게임 JAVA (0) | 2023.11.29 |
swea 5215 [D3] 햄버거 다이어트 JAVA (0) | 2023.11.29 |
swea 4615 [D3] 재미있는 오셀로 게임 JAVA (1) | 2023.11.29 |
swea 3499 [D3] 퍼펙트 셔플 JAVA (1) | 2023.11.29 |