ধরুন আমাদের দুটি তালিকা আছে 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 রেঞ্জের মধ্যে
- জন্য,
- করুন
- ret :=ret * i
- আমি 1 থেকে M রেঞ্জের জন্য, কর
- ret :=r/i এর ফ্লোর
- রিটার্ন মোড (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