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

 

11051번: 이항 계수 2

첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 1,000, 0 ≤ \(K\) ≤ \(N\))

www.acmicpc.net


문제 해결을 위한 과정

이 문제의 경우 수학적 지식이 조금은 필요한 문제였습니다. 이항 계수 5 2는 5C2로 표현할 수 있고 이는 5 * 4 / 2 *1로 나타낼 수 있습니다. 추가적으로 이 문제의 경우 overflow를 방지하기 위해 10007 mod연산을 합니다. 따라서 이를 유의하며 해결하면 쉽게 해결할 수 있습니다.


소스코드
n, k = map(int, input().split())

a, b = 1, 1

for i in range(k):
  a *= n
  a % 10007
  n -= 1

temp = k
for i in range(temp, 0, -1):
  b *= k
  b % 10007
  k -= 1
  
print((a // b) % 10007)

+ Recent posts