https://www.acmicpc.net/problem/11050
#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!하면 되지.
시간을 위해서, 반복문 하나에 다 쑤셔넣으려고 노력해서 나온 결과다.
'백준 문제풀이 > 브론즈1' 카테고리의 다른 글
백준 2839번 - 설탕 배달 (0) | 2021.12.10 |
---|---|
백준 2869번 - 달팽이는 올라가고 싶다 (0) | 2021.11.14 |
백준 1546번 - 평균 (0) | 2021.10.28 |
백준 1453번 - 피시방 알바 (0) | 2021.10.28 |
백준 1259번 - 팰린드롬수(palindrome) (0) | 2021.10.28 |