STUDY/Algorithm

[백준] 2407 조합 python

sinawi95 2022. 2. 7. 06:16
728x90

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

 

2407번: 조합

n과 m이 주어진다. (5 ≤ n ≤ 100, 5 ≤ m ≤ 100, m ≤ n)

www.acmicpc.net

파이썬으로는 int나 long long등 변수 값의 최대 크기를 생각하지 않아도 되기 때문에 상당히 쉬운 문제이다.

일차원 변수를 사용해서 nCm = n! / ( (n-m)! * m! ) 으로 구현했다.

def main():
    n, m = map(int, input().split())
    fact = [1 for _ in range(n + 1)]
    for i in range(2, n + 1):
        fact[i] = fact[i - 1] * i
    print(fact[n] // fact[n-m] // fact[m])


if __name__ == '__main__':
    main()

 

하지만 C, C++로 풀때는 이야기가 달라진다. 이 문제에서 나올수 있는 최대 값은 100 C 50 = 100891344545564193334812497256 이다. 이 값은 long long size보다 더 큰 값이므로 쉽게 계산하지 못한다.

이를 풀기 위해선 gcc에서는 __uint128_t이라는 unsigned 정수 자료형을 제공하므로 이를 사용해서 쉽게 풀던지, string 자료형으로 바꿔서 풀면된다.


참고한 글

https://www.acmicpc.net/board/view/72957

 

글 읽기 - 2407) C++로 푸실려는 분들을 위한 글

댓글을 작성하려면 로그인해야 합니다.

www.acmicpc.net

https://rujang.tistory.com/entry/%EB%B0%B1%EC%A4%80-2407%EB%B2%88-%EC%A1%B0%ED%95%A9-CC

 

[백준] 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)..

rujang.tistory.com

 

'STUDY > Algorithm' 카테고리의 다른 글

[백준] 3184 양 python  (0) 2022.02.08
[백준] 13549 숨바꼭질 3 python  (0) 2022.02.07
[백준] 9421 소수상근수 python  (0) 2022.02.06
[백준] 14697 방배정하기 python  (0) 2022.02.06
[백준] 22942 데이터 체커 python  (0) 2022.02.05