알고리즘/알고리즘 문제풀이

[백준] 11050 : 이항 계수 1

mint* 2023. 12. 29. 23:47
728x90

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

 

11050번: 이항 계수 1

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

www.acmicpc.net

 

이항 계수 2 문제를 풀지 못해 이항 계수 1 문제를 풀었다.

이항 계수 2는 더 큰 팩토리얼(1000!)를 다룬다.

 

내일 다시 이항 계수 2 문제를 도전해볼 생각이다.

 

코드

#include <bits/stdc++.h>
using namespace std;
int n, k, p1, p2;
long long answer = 1;

int main(){
    cin.tie(0); ios_base::sync_with_stdio(false); cout.tie(0);
    // 1. 입력받기
    cin >> n >> k;
    p1 = k;
    p2 = n-k;
    // 2. 곱하면서 나누기
    for(int i=n;i>=1;i--){
        answer *= i;
        while ((p1>1) && (answer%p1==0)) answer /= p1--;
        while ((p2>1) && (answer%p2==0)) answer /= p2--;
    }
    while ((p1>1) && (answer%p1==0)) answer /= p1--;
    while ((p2>1) && (answer%p2==0)) answer /= p2--;
    // 3. 정답 출력
    cout << answer;    
}
728x90