백준(C언어) 풀이/수학

백준(C) 11050번 이항 계수 1 풀이

개발윗미 2021. 9. 23. 11:55

C로 구현한 11050번 이항 계수 1 문제 풀이입니다.

 

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

 

11050번: 이항 계수 1

첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\))

www.acmicpc.net


#include <stdio.h>

int main() {
	int n, k, a1 = 1, a2 = 1, b = 1;
	scanf("%d %d", &n, &k);
	for(int i=n-k; i>=2; i--) {
		a1 *= i;
	}
	for(int i=k; i>=2; i--) {
		a2 *= i;
	}
	for(int i=n; i>=2; i--) {
		b *= i;
	}
	printf("%d\n", b/(a1*a2));
}

 

이 문제에서 요구하는 이항 계수를 해결하는 공식은 아래와 같다.

이항 계수

 

그러므로 첫번째 반복문에서는 (n-k)! 를 구하고, 두번째 반복문에서는 k! 를 구한다.

 

마찬가지로 분자에 해당되는 n! 의 결과는 세번째 반복문에서 구해 최종적으로 n! / (n - k)! k! 의 결과를 출력한다.