문제
자연수 N과 정수 K가 주어졌을 때 이항 계수 nCk를 10,007로 나눈 나머지를 구하는 프로그램을 작성하시오.
조건 및 입출력
1. 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ K ≤ N)
2. nCk를 10,007로 나눈 나머지를 출력한다.
코드
# 정의부
def fact(n):
result=1;
for i in range(1,n+1):
result*=i;
return result;
# 입력부
n,m=map(int,input().split());
# 처리부
result=fact(n)//(fact(n-m)*fact(m));
# 출력부
print(result%10007);
풀이 과정
펙토리얼을 정의하는 사용자 정의 함수를 만든다.
1부터 n까지 곱해야 하므로, for문을 이용해 1부터 n까지 곱해주는 함수를 만든다.
그 후 조합의 기본 정의에 의해 n!/((n-r)!*(r)!)을 해 준다. 다만, 파이썬은 / 연산자의 결과값은 실수형이므로, int형으로 형변환을 해주거나, 아님 //연산자를 써야한다.
그후 10007로 나눴을 때의 결과값을 출력하면 된다.
여담
이항 계수 1은 C로 풀었으므로, 이번엔 Python으로 코드를 작성 해 보았다.
파이썬으로 코드를 작성하니 진짜 몇 줄 안 나온다... ㅋㅋ
| 코드가 이상하거나, 이해가 되지 않는 부분이 있다면 댓글 남겨주세요! + 더 좋은 풀이 방법이 있다면, 알려주시면 감사하겠습니다! :) |
'Programming > Python' 카테고리의 다른 글
| [백준] 2309번 : 일곱 난쟁이 (Python / 파이썬) (0) | 2023.01.19 |
|---|---|
| [백준] 1747번 : 소수&팰린드롬 (Python / 파이썬) (0) | 2023.01.18 |
| [백준] 18017번 : 총알의 속도 (Python / 파이썬) (3) | 2023.01.14 |
| [백준] 10988번 : 팰린드롬인지 확인하기 (Python / 파이썬) (0) | 2023.01.12 |
| [백준] 11179번 : 2진수 뒤집기 (Python / 파이썬) (0) | 2023.01.10 |