반응형
Notice
Recent Posts
Recent Comments
Link
It's easy, if you try
[백준/boj] 11401: 이항 계수 3 / 페르마의 소정리 / 수학 / 정수론 본문
반응형
문제
풀이
1,000,000,007 는 int 범위 중 가장 큰 소수 값이다.
import java.io.*;
import java.util.*;
public class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static StringTokenizer st;
static int MOD = 1000000007;
public static void main(String[] args) throws Exception {
st= new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int R = Integer.parseInt(st.nextToken());
System.out.println(nCr(N, R, MOD));
}
private static long nCr(int n, int r, int p) {
if(r == 0) return 1L;
long[] fac = new long[n+1];
fac[0] = 1;
for(int i=1; i<=n; i++)
fac[i] = fac[i-1] * i % p;
return (fac[n] * power(fac[r], p-2, p)
% p * power(fac[n-r], p-2, p) % p) %p;
}
private static long power(long x, long y, long p) { // 제곱수 구하기, 분할 정복
long res = 1L;
x = x % p;
//=> 3^7 > 7 3 1
while(y > 0) {
if(y % 2 == 1)
res = (res * x) % p;
y = y >> 1;
x = (x * x) % p;
}
return res;
}
}
$a^p = a \pmod p$ ⇒ 참
$a^{p-1} = 1 \pmod p$ ⇒ 참
$a^{p-2} = \frac{1}{a} \pmod p$ ⇒ 추정
$\frac{7!}{2!5!} \pmod {11} = {7!} * ({2!}*{5!})^{11-2}$
반응형
'알고리즘 > 자바(Java)' 카테고리의 다른 글
[백준/boj] 1194: 달이 차오른다, 가자. (JAVA) / 비트마스킹 / BFS (0) | 2021.04.22 |
---|---|
[SW Expert Academy] 5604: 구간 합 (Java) (0) | 2021.04.20 |
[백준/boj] 10826: 피보나치 수4 (Java) / BigInteger / DP (0) | 2021.04.19 |
[백준/boj] 2239: 스도쿠 (Java) / 백트래킹 (0) | 2021.04.16 |
[백준/boj] 15961: 회전 초밥 (Java) / 슬라이딩 윈도우 / 투 포인터 (0) | 2021.04.15 |
Comments