다리놓기_1010

구름코딩·2020년 12월 30일
0

https://www.acmicpc.net/problem/1010

조합문제

N개에서 R개를 순서에 상관없이 뽑기

즉, (1, 2, 3) == (1, 3, 2) 이므로 순차적으로 뽑는다면 순서가 어긋날일이 발생하지 않는다

그러므로 조합공식인 nCr로 풀면된다

import java.io.*;
import java.util.*;

public class 다리놓기_1010 {
    public static void main(String[] args) throws IOException
    {
        /*
        순서를 가지고 M개의 다리중에서 N개의 다리뽑기  - 조합
         */
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;

        int N = Integer.parseInt(br.readLine());
        StringBuffer sb = new StringBuffer();

        for (int t = 0; t < N; t++)
        {
            st = new StringTokenizer(br.readLine());
            int n = Integer.parseInt(st.nextToken());
            int m = Integer.parseInt(st.nextToken());

            //mCn
            n = Math.min(m - n, n);
            long up = 1;
            for (int count = n; count > 0; count--)
            {
                up *= m;
                m--;
            }
            long down = 1;
            while (n >= 1)
            {
                down *= n;
                n--;
            }
            long ret = up / down;
            sb.append(ret).append("\n");
        }
        System.out.print(sb.toString());
    }
}
profile
내꿈은 숲속의잠자는공주

0개의 댓글

관련 채용 정보