서쪽에는 n개, 동쪽에는 m개의 사이트가 있다.
서쪽과 동쪽을 잇는 다리를 지으려고 한다. (한 사이트에는 최대 한 개의 다리만 연결!)
다리를 최대한 많이 지을 수 있는 방법은 n개의 다리를 짓는 것이다.
해당 문제는 간단한 원리이다.
동쪽의 m개의 사이트 중, 다리가 지어질 n개만 고르면 된다.
다리는 겹쳐지지 않아야 하기 때문에, 동쪽의 n개의 사이트만 고르면 순차적으로 잇는 하나의 경우밖에 나오지 않아, n!의 경우의 수는 계산하지 않아도 된다.
즉 , nCm을 푸는 알고리즘을 작성하면 되는 것이다.
import math
case = int(input())
for _ in range(case):
n, m = map(int, input().split())
bridge = math.factorial(m) // (math.factorial(n) * math.factorial(m - n))
print(bridge)