두 개의 목록 nums1과 nums2가 있다고 가정합니다. 이제 제약 조건은 각 목록의 요소를 병합할 때 변경되지 않는 것입니다. 예를 들어 요소가 [1,2,3] 및 [4,5,6]이면 일부 유효한 병합 목록은 [1, 4,2,3,5,6] 및 [1,2,3,4,5,6]에 다른 유효한 병합 시퀀스가 있을 수 있습니다. 따라서 목록 N과 M의 크기가 있는 경우 유효한 목록을 얻기 위해 이들을 병합할 수 있는 방법의 수를 찾아야 합니다. 답이 너무 크면 결과 모듈로 10^9 + 7을 반환합니다.
따라서 입력이 N =5 M =3과 같으면 출력은 56
이 됩니다.이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- ret :=1
- N + 1 ~ N + M 범위의 i에 대해
- ret :=ret * i
- 1~M 범위의 i에 대해 다음을 수행합니다.
- ret :=r/i의 바닥
- ret 모드(10^9 + 7)를 반환
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(N, M): ret = 1 for i in range(N + 1, N + M + 1): ret *= i for i in range(1, M + 1): ret //= i return ret % (10**9 + 7) N = 5 M = 3 print(solve(N, M))를 반환합니다.
입력
5, 3
출력
56