কম্পিউটার টিউটোরিয়াল

পাইথনে হাম্বল ম্যাট্রিক্সের সম্ভাব্য অরেঞ্জমেন্টের সংখ্যা বের করা

n×m অর্ডারের হাম্বল ম্যাট্রিক্সের সম্ভাব্য অরেঞ্জমেন্ট কতটি আছে তা বের করতে হবে। হাম্বল ম্যাট্রিক্সের শর্ত:

  • ১ থেকে n×m পর্যন্ত প্রতিটি সংখ্যা ঠিক একবার থাকবে।
  • যেকোনো দুটি ইনডেক্স জোড়া (i1,j1) এবং (i2,j2) এর জন্য যদি i1+j1 < i2+j2 হয়, তবে Mat[i1,j1] < Mat[i2,j2] হবে।

উত্তর ১০⁹+৭ মডুলো।

উদাহরণ

ইনপুট: n = 2, m = 2

আউটপুট: 2

সম্ভাব্য ম্যাট্রিক্স:

12
34
এবং
13
24

সমাধান পদ্ধতি

  1. p := 10⁹+7
  2. ফ্যাক্টোরিয়াল প্রিকম্পিউট করুন ১০⁶ পর্যন্ত।
  3. যদি n হয় তবে সোয়্যাপ করুন।
  4. prod := 1
  5. x = 1 থেকে m-1: prod = (prod * fact[x-1]) % p; prod = (prod**2) % p
  6. x = 0 থেকে n-m: prod = (prod * fact[m-1]) % p
  7. prod রিটার্ন করুন।

পাইথন ইমপ্লিমেন্টেশন

p = 10**9 + 7

def solve(n, m):
    fact = [1]
    for x in range(2, 10**6 + 1):
        fact.append(fact[-1] * x % p)
    if m > n:
        n, m = m, n
    prod = 1
    for x in range(1, m):
        prod = (prod * fact[x - 1]) % p
        prod = (prod * prod) % p
    for x in range(n - m + 1):
        prod = (prod * fact[m - 1]) % p
    return prod

# টেস্ট
n = 3
m = 3
print(solve(n, m))  # আউটপুট: 24

ইনপুট

3, 3

আউটপুট

24
  1. পাইথনে ব্র্যাকেট ডেপথ অনুযায়ী ক্যারেক্টার কাউন্ট করা

  2. পাইথন প্রোগ্রাম - n নোড দিয়ে BST-এর সংখ্যা বের করুন

  3. পাইথনে বাইনারি ট্রিতে যেসব পথের যোগফল k তাদের সংখ্যা গুনার প্রোগ্রাম

  4. পাইথনে ম্যাট্রিক্সে ঘিরা দ্বীপের সংখ্যা গণনা করার প্রোগ্রাম