কম্পিউটার

পাইথনে সম্ভাব্য নম্র ম্যাট্রিক্সের সংখ্যা গণনা করার প্রোগ্রাম


ধরুন আমাদের দুটি মান আছে n এবং m। আমাদের n x m ক্রম বিনম্র ম্যাট্রিসের সম্ভাব্য বিন্যাসের সংখ্যা খুঁজে বের করতে হবে। একটি ম্যাট্রিক্সকে নম্র বলা হয় যখন

  • এতে 1 থেকে n x m পরিসরের প্রতিটি উপাদান ঠিক একবার থাকে
  • যেকোন দুটি সূচক জোড়ার জন্য (i1, j1) এবং (i2, j2), যদি (i1 + j1) <(i2 + j2), তাহলে Mat[i1, j1]

উত্তরটি খুব বড় হলে ফলাফল মোড 10^9 + 7 ফেরত দিন।

সুতরাং, যদি ইনপুটটি n =2 m =2 এর মত হয়, তাহলে আউটপুট হবে 2, কারণ দুটি সম্ভাব্য ম্যাট্রিক্স আছে -

1 2
3 4

এবং

1 3
2 4

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • p :=10^9+7
  • ফলাফল :=মান 1 সহ একটি তালিকা
  • 2 থেকে 10^6 রেঞ্জের x এর জন্য, করুন
    • temp :=ফলাফলের শেষ উপাদান
    • temp :=(temp*x) mod p
    • ফলাফলের শেষে তাপমাত্রা ঢোকান
  • যদি m> n হয়, তাহলে
    • তাপ :=n
    • n :=m
    • m :=temp
  • prod :=1
  • 1 থেকে m রেঞ্জের x-এর জন্য
  • করুন
    • prod :=(prod * ফলাফল[x-1]) mod p
    • prod :=(prod^2) mod p
  • 0 থেকে n - m রেঞ্জের x-এর জন্য
  • করুন
    • prod :=(prod * ফলাফল[m-1]) mod p
  • প্রত্যাবর্তন পণ্য

উদাহরণ

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

p = 10**9+7

def solve(n, m):
   result = [1]
   for x in range(2,10**6+1):
      temp = result[-1]
      temp = (temp*x) % p
      result.append(temp)

   if(m > n):
      temp = n
      n = m
      m = temp
   prod = 1
   for x in range(1,m):
      prod = (prod * result[x-1]) % p
   prod = (prod**2) % p
   for x in range(n-m+1):
      prod = (prod*result[m-1]) % p
   return prod

n = 3
m = 3
print(solve(n, m))

ইনপুট

3, 3

আউটপুট

24

  1. পাইথনে প্রতিটি বন্ধনী গভীরতায় অক্ষরের সংখ্যা গণনা করার প্রোগ্রাম

  2. পাইথনে n নোড সহ BST সংখ্যা গণনা করার প্রোগ্রাম

  3. পাথের সংখ্যা গণনা করার প্রোগ্রাম যার যোগফল পাইথনে k

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