দুটি লিস্ট nums1 এবং nums2 দেওয়া আছে। মার্জ করার সময় প্রতিটি লিস্টের এলিমেন্টের অর্ডার বদলাবে না। যেমন [1,2,3] এবং [4,5,6] হলে বৈধ মার্জড লিস্ট: [1,4,2,3,5,6] এবং [1,2,3,4,5,6]। লিস্টগুলোর সাইজ N এবং M হলে কতভাবে সেগুলো মার্জ করা যায় তা বের করতে হবে। উত্তর বড় হলে ১০⁹+৭ দিয়ে মডুলো করুন।
উদাহরণ
ইনপুট: N = 5, M = 3
আউটপুট: 56
সমাধান পদ্ধতি
ret := 1- i = N+1 থেকে N+M পর্যন্ত:
ret := ret * i
- i = 1 থেকে M পর্যন্ত:
ret := ret // i(ইন্টিজার ডিভিশন)
ret % (10⁹ + 7)রিটার্ন করুন।
এটি বিনোমিয়াল কোইফিশিয়েন্ট C(N+M, M) বা C(N+M, N) ক্যালকুলেট করে।
পাইথন ইমপ্লিমেন্টেশন
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)) # আউটপুট: 56
ইনপুট
5, 3
আউটপুট
56