오답노트

[수학] BOJ 11050번 이항 계수 1 본문

C,C++/코딩테스트

[수학] BOJ 11050번 이항 계수 1

권멋져 2022. 6. 8. 18:32

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

 

11050번: 이항 계수 1

첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\))

www.acmicpc.net

- 문제파악

n 과 k 의 이항계수를 출력하라

 

- 정답

#include "bits/stdc++.h"

using namespace std;

int main()
{
    int n, k;
    cin >> n >> k;

    if (!k || n == k)
    {
        cout << 1;
        return 0;
    }

    // n! / (n-k)! k!
    int tmp = n - k;
    if (tmp < k)
    {
        tmp = k;
        k = n - k;
    }
        
    unsigned long long a = 1, b = 1;
    for (int i = 1; i <= n; i++)
    {
        if (i > tmp) a *= i;
        else if (i <= k) b *= i;
    }

    cout << a / b;

}