• 코드

정답 코드 : 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);

    }
}

+ Recent posts