====== 부녀회장이 될테야 ====== ===== 풀이 ===== * 점화식을 세워보자. f(a,b) = f(a,b-1) + f(a-1,b) 가 된다. * f(a,b) = C(a+b,b+1) 라 하면, C(a+b,b+1) = C(a+b-1,b) + C(a+b-1,b+1) * n=a+b, k=b+1 이라 하면 C(n,k) =C(n-1,k) +C(n-1,k-1) 이라서 이항계수의 점화식이 된다 * 따라서 C(a+b,b+1)를 구하면 된다. * C(a+b,b+1) 을 계산하는 것은 O(a+b) 이므로, T개의 테스트를 매번 이렇게 구하면 O(T(a+b))가 된다. 하지만 이항계수를 여러번 구할때는 미리 팩토리얼 값을 다 계산해 놓으면 각 쿼리에 대해 O(1)에 계산할 수 있고 이렇게 하면 총 시간복잡도 O(T+a+b)에도 해결 가능하다. * 숫자 범위가 작아서 실제 구현은 그냥 매번 이항계수를 구하는 O(T(a+b))으로 구현했다. ===== 코드 ===== """Solution code for "BOJ 2775. 부녀회장이 될테야". - Problem link: https://www.acmicpc.net/problem/2775 - Solution link: http://www.teferi.net/ps/problems/boj/2775 """ import math def main(): T = int(input()) for _ in range(T): k = int(input()) n = int(input()) print(math.comb(k + n, k + 1)) if __name__ == '__main__': main() {{tag>BOJ ps:problems:boj:브론즈_2}}