안녕하세요. 오늘은 자동차를 주차할 거예요.

문제

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

아이디어

이 문제는 조합 쪽에서 유명한? 문제입니다.
N개의 차들을 색깔에 상관없이 나열하면 경우의 수는 N!
A개의 차들은 색깔이 같으므로 다른애들은 고정시키고 얘네끼리만 바뀌면 똑같으므로 A!로 나누고
B개의 차들은 색깔이 같으므로 다른애들은 고정시키고 얘네끼리만 바뀌면 똑같으므로 B!로 나누고
C개의 차들은 색깔이 같으므로 다른애들은 고정시키고 얘네끼리만 바뀌면 똑같으므로 C!로 나누면
결과는 N!/A!B!C!이 됩니다.

소스코드

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

ll fact(ll x)
{
    if (x == 0) return 1;
    return x * fact(x - 1);
}
int main(void)
{
    ios_base::sync_with_stdio(false); cin.tie(NULL);
    ll a, b, c, d;
    cin >> a >> b >> c >> d;

    cout << fact(a) / fact(b) / fact(c) / fact(d);
}


감사합니다.

0개의 댓글