কম্পিউটার

পাইথনে প্রধান ব্যবস্থা


আমাদের 1 থেকে n-এর পারমুটেশনের সংখ্যা খুঁজে বের করতে হবে, তাই মৌলিক সংখ্যাগুলিকে মৌলিক সূচকে স্থাপন করা হয়েছে। উত্তরগুলি বড় হতে পারে, উত্তর মডিউল 10^9 + 7 দিন। সুতরাং n =5 হলে আউটপুট হবে 12। তাই 12টি পারমুটেশন থাকবে। একটি সম্ভাব্য স্থানান্তর হবে [1,2,5,4,3], একটি অবৈধ স্থানান্তর হল [5,2,3,4,1] কারণ 5 সূচক 1 এ রাখা হয়েছে, এটি মৌলিক নয়।

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

  • গেটনাম নামে একটি পদ্ধতি সংজ্ঞায়িত করুন, নিম্নরূপ −
  • prime :=2 থেকে 100 পর্যন্ত সকল প্রাইমের তালিকা
  • সেট i :=0
  • যখন আমি <প্রাইম লিস্টের দৈর্ঘ্য
    • যদি প্রাইম[i]> n, তাহলে i ফেরত দিন
    • i :=i + 1
  • প্রধানের রিটার্ন দৈর্ঘ্য
  • প্রকৃত সমস্যাটি নিম্নরূপ সমাধান করা হবে
  • x :=getNum(n), p :=1, m :=10^9 + 7
  • এর জন্য i :=x নিচে 0
    • p :=p * i
    • p :=p mod m
  • এর জন্য i :=n – x নিচে 0
    • p :=p * i
    • p :=p mod m
  • রিটার্ন p

উদাহরণ

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

class Solution(object):
   def getNum(self,n):
      primes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97]
      i = 0
      while i < len(primes):
         if primes[i]>n:
            return i
         i+=1
      return len(primes)
   def numPrimeArrangements(self, n):
      """
      :type n: int
      :rtype: int
      """
      x = self.getNum(n)
      p = 1
      m = 1000000000+7
      for i in range(x,0,-1):
         p*=i
         p%=m
      for i in range(n-x,0,-1):
         p*=i
         p%=m
      return p
ob1 = Solution()
print(ob1.numPrimeArrangements(100))

ইনপুট

100

আউটপুট

682289015

  1. একটি ব্যবধানে সমস্ত প্রাইম সংখ্যা প্রিন্ট করার জন্য পাইথন প্রোগ্রাম

  2. প্রাইম নম্বর চেক করতে পাইথন প্রোগ্রাম

  3. পাইথন প্রোগ্রামে একটি সংখ্যার অনন্য মৌলিক গুণনীয়কের গুণফল

  4. issuperset() পাইথনে