정신과 시간의 방
카테고리
작성일
2024. 7. 12. 14:27
작성자
risehyun
  • 문제

 

  • 풀이
#include <iostream>
using namespace std;
 
int factorial(int t) 
{
	// 초기값이 0이면 곱한 결과가 0이 되므로 반드시 1로 초기화 해주어야 한다.
    int result = 1;
    
    // 해당 값부터 하나씩 줄여가며 곱해간다.
    for (int i = t; i > 0; i--) 
    {
        result *= i;
    }
    return result;
}
 
int main() 
{
    int n, k;
    cin >> n >> k;
 
    int result = factorial(n) / (factorial(k) * factorial(n - k));
 
    cout << result;
}

 

  • 메모
    이항 계수를 구하기 위해 팩토리얼을 사용했다.
    팩토리얼 공식은 factorial(n) / (factorial(k) * factorial(n - k))이고, 아래의 함수로 구현할 수 있다.
int factorial(int t) 
{
    // 초기값이 0이면 곱한 결과가 0이 되므로 반드시 1로 초기화 해주어야 한다.
    int result = 1;
    
    // 해당 값부터 하나씩 줄여가며 곱해간다.
    for (int i = t; i > 0; i--) 
    {
        result *= i;
    }
    return result;
}

'코딩테스트' 카테고리의 다른 글

[백준/2588번/C++] 곱셈  (0) 2024.07.21
☆ [백준/10847번/C++] 큐  (0) 2024.07.16
[백준/2798번/C++] 블랙잭  (0) 2024.07.08
[백준/1181번/C++] 단어 정렬  (0) 2024.07.03
[백준/10814번/C++] 나이순 정렬  (0) 2024.06.30