‡ CODING TEST STUDY ‡/º 백준
[백준 2407번] 조합
Trudy | 송연
2023. 8. 26. 03:05
2407번: 조합
n과 m이 주어진다. (5 ≤ n ≤ 100, 5 ≤ m ≤ 100, m ≤ n)
www.acmicpc.net
처음에는 조합을 계산하는 방식을 for문을 돌려서 그대로 표현하려고 했다
근데 정수로 받다 보니까 원하는 대로 되지 않음
for(int i=0; i<s; i++){
r *= n;
n--;
r /= m;
m--;
}
cout << r << endl;
for(m; m>0; m--){
r /= m;
}
그러다가 재귀를 사용해서 팩토리얼 함수를 만든 게 기억이 났다
#include <iostream>
using namespace std;
int factorial(int a){
if(a==0 || a==1) return 1;
return a*factorial(a-1);
}
int main()
{
long n, m;
cin >> n >> m;
long r = factorial(n)/factorial(m);
cout << r << endl;
r /= factorial(n-m);
cout << r << endl;
return 0;
}
근데 숫자가 너무 커서 0으로 출력이 되어버림
검색해보니 string으로 변환해서 써줘야했던 것
[백준] 2407번 : 조합 [C/C++] — 백준 하루 한 문제 (tistory.com)
[백준] 2407번 : 조합 [C/C++]
#문제 2407번: 조합 https://www.acmicpc.net/problem/2407 2407번: 조합 n과 m이 주어진다. (5 ≤ n ≤ 100, 5 ≤ m ≤ 100, m ≤ n) www.acmicpc.net #접근방법 조합을 구하는 식 (nCm = n-1Cm-1 + n-1Cm)을 이용하고, long long 범위
rujang.tistory.com
1. nCm = n-1Cm-1 + n-1Cm 성질 이용하기
2. string으로 큰 수 덧셈하기
(???)
++
큰 수 덧셈/더하기 알고리즘 구현 (C++) (백준 BOJ 15353 : 큰 수 A+B) (tistory.com)