백준 문제풀이/브론즈1
백준 11050번 - 이항계수 1
void_melody
2022. 1. 12. 21:58
https://www.acmicpc.net/problem/11050
11050번: 이항 계수 1
첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\))
www.acmicpc.net
#include <iostream>
using namespace std;
int main()
{
std::cin.tie(NULL);
std::ios::sync_with_stdio(false);
int N, K;
cin >> N >> K;
int temp = 1;
int div = 1;
for (int i = 1; i <= K; i++)
{
temp *= N;
N--;
div *= i;
}
cout << temp / div;
return 0;
}
원래 조합이 n! / (n-r)! r! 이다.
근데 수능문제들을 좀 풀어봤다면 n! / (n-r)! 을 한 다음에, 1/r!을 곱하는 것이 조금 더 편하다.
n! / (n-r)!의 의미를 잘 생각해본다면, n부터 시작해서 r개 만큼 -- 하면서 곱하면 된다.
(해당 코드는 temp *= N; N--;에 해당)
r!은? 그냥 r!하면 되지.
시간을 위해서, 반복문 하나에 다 쑤셔넣으려고 노력해서 나온 결과다.