Algorithm/BOJ(Baekjoon Online Judge)
[백준 - 11051번] 이항계수2 - Java //Wello Horld//
koucop
2019. 7. 23. 15:39
이번에는 BOJ의 11051번 문제 "이항계수2"를 풀어보도록 하자
입력으로 N과 K가 주어지고 주어진 입력을 통해, 이항계수 (N K) 를 10,007로 나눈 나머지를 구하는 프로그램을 작성하는 문제이다. 문제는 간단하니, 부가설명없이 성공한 코드는 아래와 같다.
import java.io.*;
import java.math.BigInteger;
import java.util.*;
public class sample {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
bw.write(combination(N, K).remainder(new BigInteger("10007")) + "\n");
bw.flush();
br.close();
bw.close();
}
public static BigInteger combination(int N, int K){
BigInteger combiUp = new BigInteger("1");
BigInteger combiDown = new BigInteger("1");
for(int i = 1; i <= K; i++){
combiUp = combiUp.multiply(new BigInteger(String.valueOf(N-(i-1))));
combiDown = combiDown.multiply(new BigInteger(String.valueOf(i)));
}
return combiUp.divide(combiDown);
}
}
문제 : https://www.acmicpc.net/problem/11051
11051번: 이항 계수 2
첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 1,000, 0 ≤ \(K\) ≤ \(N\))
www.acmicpc.net