이항 계수를 구하는 문제이다.
이 공식을 사용하기로 한다.
(실패)
#include <bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int n, k, np = 1, kp = 1, nkp = 1;
cin >> n >> k;
for(int i = 2; i < n; i++)
np *= i;
for(int i = 2; i < k; i++)
kp *= i;
for(int i = 2; i < n-k; i++)
nkp *= i;
int result = np/(kp*nkp);
cout << result;
return 0;
}
입력
5 2
출력
12
원래 10이 되어야 한다.
(성공)
#include <bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int n, k, np = 1, kp = 1, nkp = 1;
cin >> n >> k;
for(int i = 2; i <= n; i++)
np *= i;
for(int i = 2; i <= k; i++)
kp *= i;
for(int i = 2; i <= n-k; i++)
nkp *= i;
int result = np/(kp*nkp);
cout << result;
return 0;
}
종료식의 조건에 같다는 조건을 추가해 주었더니 해결되었다.
교훈 : 손으로 써보자