입력 코드
#include <stdio.h>
int factorial(int num) {
int i, ans = 1;
for (i = 1; i <= num; i++) {
ans *= i;
}
return ans;
}
main() {
int N, K, C;
scanf("%d %d", &N, &K);
C = factorial(N) / (factorial(K)*factorial(N - K));
printf("%d\n", C);
}
코드 설명
팩토리얼 / 재귀함수를 이용하는 문제
#include <stdio.h>
main() {
int N, K, C;
scanf("%d %d", &N, &K);
int numerator = 1, denominator = 1;
int i;
for (i = 0; i < K; i++) {
numerator *= N - i;
denominator *= K - i;
}
C = denominator / numerator;
printf("%d", C);
}
처음에는 분자 분모를 따로 반복문으로 계산해서 마지막에 나눈 몫으로 이항계수를 계산했더니 계속 0이 출력되었다. 왜지,,
#include <stdio.h>
int factorial(int num) {
int i, ans = 1;
for (i = 1; i <= num; i++) {
ans *= i;
}
return ans;
}
main() {
int N, K, C;
scanf("%d %d", &N, &K);
C = factorial(N) / (factorial(K)*factorial(N - K));
printf("%d\n", C);
}
찾아보니까 팩토리얼을 따로 함수로 작성해서 이항계수를 구하는 방법도 있고 재귀함수를 이용하는 방법도 있다. 그런데 아직 재귀함수까지는 잘 활용하지 못하는 것 같다.
↓↓↓ 참고한 사이트
문제 출처
'C' 카테고리의 다른 글
#23. [백준_C언어] 2577 : 숫자의 개수 (0) | 2021.01.11 |
---|---|
#22. [백준_C언어] 1110 : 더하기 사이클 (0) | 2021.01.09 |
#20. [백준_C언어] 10250 : ACM 호텔 (0) | 2021.01.08 |
#19. [백준_C언어] 2798 : 블랙잭 (0) | 2021.01.08 |
#18. [백준_C언어] 1259 : 팰린드롬수 (0) | 2021.01.07 |