반응형
문제
자연수 N과 정수 K가 주어졌을 때 이항 계수 (NK)를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 0 ≤ K ≤ N)
출력
(NK)를 출력한다.
<<소스코드>>
# 이항계수 구하는 법 = n! / (n-k)!*k!
n,k=map(int,input().split())
#n!(팩토리얼) 구하는 함수
def f(n):
ans = 1 #0은 없으니 1부터 시작한다.
for i in range(2,n+1):
ans = ans*i
return ans
#소수점 첫째자리 버림
a = round(f(n)/(f(n-k)*f(k)))
print(a)
<<결과값>>
5 2
10
이항계수 공식을 구하는 원리는 모르겠다.... 수학을 놓은지 10년 됬더니 공식보고 그냥 바로 짰다ㅠㅠ
팩토리얼을 구하는 식은 쉬우니깐,, 어떻게 어떻게 답은 구했다.
n개 중에 k개를 뽑는 조합의 수라고 생각하면 쉽겠다.
728x90
반응형
'알고리즘' 카테고리의 다른 글
[파이썬] 단계별 백준 문제 풀기 - 10828번 스택 (0) | 2021.03.16 |
---|---|
[파이썬] 단계별 백준 문제 풀기 - 1010번 이항계수 (다리놓기) (0) | 2021.03.16 |
[파이썬] 단계별 백준 문제 풀기 - 1934 정수 (최소공배수) (0) | 2021.03.15 |
[파이썬] 단계별 백준 문제 풀기 - 2609 정수 (최대공약수와 최소공배수) (0) | 2021.03.15 |
[파이썬] 단계별 백준 문제 풀기 - 11399 그리디 알고리즘 (ATM) (0) | 2021.03.15 |