문제 내용
문제
자연수 \(N\)과 정수 \(K\)가 주어졌을 때 이항 계수 \(\binom{N}{K}\)를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\))
출력
\(\binom{N}{K}\)를 출력한다.
예제 입력 | 예제 출력 |
5 2 | 10 |
문제 풀이
이항 계수 관련 설명은 (https://ko.wikipedia.org/wiki/이항_계수)를 참고하는 것이 좋을 것 같다! 아니면 다른 블로그에도 설명이 잘되어있다.
n\(C\)k를 구하면 되는데, 정석대로 구하려면 \(\frac{N!}{K!(N-K)!}\) 로 계산해야겠지만 고등학교때 손계산 당시 자주 사용했던 방법으로 풀어보았다. 예를 들어 5\(C\)2 일때는 \(\frac{5*4}{2*1}\)로 계산하는 방식이다. 중복 되는 부분을 약분하고 나면 해당 부분만 남게 된다~
</>̆̈ 코드
fun main() {
val (n, k) = readLine()!!.split(" ").map { it.toInt() }
var answer = 1
repeat(k) { answer = answer * (n-it) / (it+1)}
print(answer)
}
링크