https://www.acmicpc.net/problem/1010
코드
#include <stdio.h>
double result(int a, int b);
double factorial(int n);
int main()
{
int n,a,b;
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
scanf("%d %d", &a, &b);
printf("%.f\n", result(a,b));
}
return 0;
}
double result(int a, int b)
{
if (a == b) return 1;
else if (a == 1) return b;
else return factorial(b) / (factorial(b - a) * factorial(a));
}
double factorial(int n)
{
if (n == 0) return 1;
return n * factorial(n - 1);
}
코드 설명
나는 조합을 이용해서 문제를 풀었다. nCr = n! / ((n-r)! * r!) 이므로 팩토리얼을 구하는 함수 factorial을 사용해서 조합의 공식대로 값을 계산해 출력했다.
느낀 점
함수의 자료형 때문에 몇 번 틀렸다. 아무 생각 없이 int형으로 선언했다가 당연히 틀렸고, 그래서 long long을 썼는데 이때도 틀려서 당황했다. 문제에도 관련 질문이 있어서 읽어보고 상황을 이해했다. 평소에는 아무 생각이 없이 자료형을 썼는데, (정수면 int, 실수면 double) 자료형도 신중하게 고민하고 써야겠다고 느꼈다.
관련 질문 링크 : https://www.acmicpc.net/board/view/93759
'PS (C, C++)' 카테고리의 다른 글
[백준/C] 1159 농구 경기 (0) | 2022.08.21 |
---|---|
[백준/C] 1032 명령 프롬프트 (0) | 2022.08.20 |
[백준/C] 1924 2007년 (0) | 2022.08.20 |
[백준/C] 문자열 (0) | 2022.08.20 |
[백준/C] 함수 (0) | 2022.08.20 |