문제

자연수 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으로 코드를 작성 해 보았다.

파이썬으로 코드를 작성하니 진짜 몇 줄 안 나온다... ㅋㅋ

 

 

코드가 이상하거나, 이해가 되지 않는 부분이 있다면 댓글 남겨주세요!

+ 더 좋은 풀이 방법이 있다면, 알려주시면 감사하겠습니다! :)

+ Recent posts