안녕하세요. 오늘은 짝을 맞출 거예요.

문제

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

아이디어

D_n을 n명이 있을 때 짝을 맞추는 경우의 수라고 합시다.
그러면 이렇게 생각할 수 있습니다.

첫번째 사람을 n-1명중 하나에 택하고 D_(n-2)를 곱하자! 그리고 D_0은 당연히 1이다.

그러면 쉽게 풀립니다.
N이 입력으로 들어오면 N이하의 모든 홀수들을 다 곱해주면 되거든요.

소스코드

#include <iostream>
#define ll long long
using namespace std;

int main()
{
    ios_base::sync_with_stdio(false); cin.tie(NULL);
    ll N, ans = 1;

    cin >> N;
    while (N)
    {
        ans *= N - 1;
        N -= 2;
    }

    cout << ans;
}


감사합니다.

0개의 댓글