- 코드
정답 코드 : qazyj.tistory.com/95를 참고해서 다시 한번 비슷한 문제를 되새김하는 느낌으로 풀어봄.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
long[] factorial = new long[N+1];
factorial[0] = 1;
factorial[1] = 1;
for(int i=2; i<=N; i++) factorial[i] = (factorial[i-1]*i)%10007;
long denominator = (factorial[K]*factorial[N-K])%10007;
long index = 10007-2;
long fermatNum = 1;
while(index > 0){
if(index%2==1){
fermatNum *= denominator;
fermatNum %= 10007;
}
denominator = (denominator*denominator)%10007;
index /= 2;
}
long result = ((factorial[N]%10007)*(fermatNum%10007))%10007;
System.out.print(result);
}
}
'algorithm' 카테고리의 다른 글
[JAVA] 백준 11048번 : 이동하기 (0) | 2020.10.09 |
---|---|
[JAVA] 백준 17070번 : 파이프 옮기기 1 (0) | 2020.10.07 |
[JAVA] 백준 1991번 : 트리 순회 (0) | 2020.10.05 |
[JAVA] 백준 12865번 : 평범한 배낭 (0) | 2020.10.05 |
[JAVA] 백준 11401번 : 이항 계수 3 (0) | 2020.10.04 |