μ¬μμ΄λ ν λμμ μμ₯μ΄ λμλ€. μ΄ λμμλ λμλ₯Ό λμͺ½κ³Ό μμͺ½μΌλ‘ λλλ ν° μΌμ§μ λͺ¨μμ κ°μ΄ νλ₯΄κ³ μλ€. νμ§λ§ μ¬μμ΄λ λ€λ¦¬κ° μμ΄μ μλ―Όλ€μ΄ κ°μ 건λλλ° ν° λΆνΈμ κ²ͺκ³ μμμ μκ³ λ€λ¦¬λ₯Ό μ§κΈ°λ‘ κ²°μ¬νμλ€. κ° μ£Όλ³μμ λ€λ¦¬λ₯Ό μ§κΈ°μ μ ν©ν κ³³μ μ¬μ΄νΈλΌκ³ νλ€. μ¬μμ΄λ κ° μ£Όλ³μ λ©΄λ°ν μ‘°μ¬ν΄ λ³Έ κ²°κ³Ό κ°μ μμͺ½μλ Nκ°μ μ¬μ΄νΈκ° μκ³ λμͺ½μλ Mκ°μ μ¬μ΄νΈκ° μλ€λ κ²μ μμλ€. (N β€ M)
μ¬μμ΄λ μμͺ½μ μ¬μ΄νΈμ λμͺ½μ μ¬μ΄νΈλ₯Ό λ€λ¦¬λ‘ μ°κ²°νλ €κ³ νλ€. (μ΄λ ν μ¬μ΄νΈμλ μ΅λ ν κ°μ λ€λ¦¬λ§ μ°κ²°λ μ μλ€.) μ¬μμ΄λ λ€λ¦¬λ₯Ό μ΅λν λ§μ΄ μ§μΌλ €κ³ νκΈ° λλ¬Έμ μμͺ½μ μ¬μ΄νΈ κ°μλ§νΌ (Nκ°) λ€λ¦¬λ₯Ό μ§μΌλ €κ³ νλ€. λ€λ¦¬λΌλ¦¬λ μλ‘ κ²Ήμ³μ§ μ μλ€κ³ ν λ λ€λ¦¬λ₯Ό μ§μ μ μλ κ²½μ°μ μλ₯Ό ꡬνλ νλ‘κ·Έλ¨μ μμ±νλΌ.
μ λ ₯μ 첫 μ€μλ ν μ€νΈ μΌμ΄μ€μ κ°μ Tκ° μ£Όμ΄μ§λ€. κ·Έ λ€μ μ€λΆν° κ°κ°μ ν μ€νΈμΌμ΄μ€μ λν΄ κ°μ μμͺ½κ³Ό λμͺ½μ μλ μ¬μ΄νΈμ κ°μ μ μ N, M (0 < N β€ M < 30)μ΄ μ£Όμ΄μ§λ€.
κ° ν μ€νΈ μΌμ΄μ€μ λν΄ μ£Όμ΄μ§ 쑰건νμ λ€λ¦¬λ₯Ό μ§μ μ μλ κ²½μ°μ μλ₯Ό μΆλ ₯νλ€.
μμ μ
λ ₯ 1
3
2 2
1 5
13 29
μμ μΆλ ₯ 1
1
5
67863915
function factorial(n) {
if(n <= 1) return 1
return n * factorial(n-1)
}
const input = require('fs').readFileSync('/dev/stdin').toString().trim().split("\n")
const result = []
for(let i = 0 ; i < input.length ; i ++) {
if(!i) continue
const [N, M] = input[i].split(" ").map(a => Number(a))
const [more, less] = [Math.max(N, M), Math.min(N, M)]
// μ‘°ν© κ²½μ°μ μ
const curCombination = factorial(more) / (factorial(more-less) * factorial(less))
result.push(Math.round(curCombination))
}
console.log(result.join("\n"))