[Silver II] 이항 계수 2 - 11051
성능 요약
메모리: 12904 KB, 시간: 108 ms
분류
조합론, 다이나믹 프로그래밍, 수학
제출 일자
2023년 11월 8일 10:19:14
문제 설명
자연수 N과 정수 K가 주어졌을 때 이항 계수 NK를 10,007로 나눈 나머지를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ K ≤ N)
출력
(NK)를 10,007로 나눈 나머지를 출력한다.
import java.util.Scanner;
class Main{
public static final int DIV = 10007;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int result = (factorial(n) * pow(factorial(m) * factorial(n-m) % DIV, DIV - 2)) % DIV;
System.out.println(result);
}
private static int pow(int a, int p) {
int ret = 1;
while(p > 0){
if(p%2!=0){
ret *= a;
p--;
ret %= DIV;
}
a *= a;
a %= DIV;
p /= 2;
}
return ret;
}
private static int factorial(int n){
if(n <= 1) return 1;
return (n * factorial(n-1)) % DIV;
}
}
'알고리즘 - Baekjoon > Silver' 카테고리의 다른 글
[백준] 16948번 : 데스 나이트 Silver1(실버1) - JAVA[자바] (0) | 2023.11.17 |
---|---|
[백준] 1629번 : 곱셈 Silver1(실버1) - JAVA[자바] (0) | 2023.11.16 |
[백준] 1747번 : 소수&팰린드롬 Silver1(실버1) - JAVA[자바] (0) | 2023.11.01 |
[백준] 12026번 : BOJ 거리 Silver1(실버1) - JAVA[자바] (0) | 2023.10.26 |
[백준] 16922번 : 로마 숫자 만들기 Silver2(실버2) - JAVA[자바] (0) | 2023.10.26 |