μ΄ν κ³μ 1
λ¬Έμ
νμ΄ μΈμ΄
Kotiln
μ½λ
import java.util.*
lateinit var array: Array<Int>
var n = 0
var k = 0
fun main() = with(Scanner(System.`in`)) {
n = nextInt()
k = nextInt()
// μ¬κ· λμ DPλ‘ ν©ν λ¦¬μΌ κ΅¬ν
array = Array(n + 1) { 1 }
// ν©ν λ¦¬μΌ κ³μ°
for (i in 2..n) {
array[i] = array[i - 1] * i
}
// μ‘°ν© κ³΅μ μ μ©
// nCr = n! / (n-r)! * r!
println(array[n] / (array[n - k] * array[k]))
}
νμ΄ λ°©λ²
κ³ λ±νκ΅ λ λ°°μ΄ μ‘°ν© κ³΅μ
μ μ μ©νλ©΄ μ΄λ ΅μ§ μκ² ν΄κ²°ν μ μλ€.
κ²°κ³Ό
μ΄ν κ³μ 2
λ¬Έμ
μ½λ
import java.util.*
lateinit var array: Array<Array<Int>>
var n = 0
var k = 0
fun main() = with(Scanner(System.`in`)) {
n = nextInt()
k = nextInt()
// νμ€μΉΌμ μΌκ°νμ μ¬μ©νκΈ° μν λ°°μ΄ μ΄κΈ°ν
array = Array(n + 1) { Array(n + 1) { 1 } }
// nCr = n-1Ck-1 + n-1Ck
for (i in 1..n) {
for (j in 0..n) {
if (i == j || j == 0) {
array[i][j] = 1
} else {
array[i][j] = (array[i - 1][j - 1] + array[i - 1][j]) % 10007
}
}
}
println(array[n][k])
}
νμ΄ λ°©λ²
μ΄ν κ³μ 1
λ³΄λ€ μκ° μ»€μ‘λ€. λ¨μν DP
λ‘ κ³μ°νλ©΄ Int
λ²μλ₯Ό λ²μ΄λλ―λ‘ ν°μ Έλ²λ¦°λ€. Long
μΌλ‘ κ³μ°ν΄λ ν°μ Έλ²λ¦°λ€. λ¬Έμ μμ μλ €μ€ κ²μ²λΌ λͺ¨λλ¬
μ°μ°μ μ μ©ν΄μΌ νλ€. μ²μμλ μ΄μ λ¬Έμ μμ λͺ¨λλ¬ λλμ
μ μ μ©νλ € νλλ° μ΄ λΆλΆμ΄ μκ°λ³΄λ€ κΉλ€λ‘μμ μΌλ¨ λ€λ₯Έ λ°©μμΌλ‘ μ κ·Όνλ€.
νμ€μΉΌμ μΌκ°ν
μ μ μ©νλ€.
κ²°κ³Ό