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