কম্পিউটার

পাইথনে a, b, c দ্বারা বিভাজ্য একটি অনুক্রমের nম পদ খুঁজে বের করার প্রোগ্রাম


ধরুন আমাদের চারটি সংখ্যা n, a, b, এবং c আছে। a, b বা c দ্বারা বিভাজ্য সংখ্যার সাজানো ক্রমটির nম (0 সূচীকৃত) পদটি খুঁজে বের করতে হবে।

সুতরাং, যদি ইনপুটটি n =8 a =3 b =7 c =9 এর মত হয়, তাহলে আউটপুট হবে 18, কারণ ক্রমটির প্রথম 9টি পদ হল [1, 3, 6, 7, 9, 12, 14 , 15, 18]।

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

  • যদি ন্যূনতম a, b, c 1 এর সমান হয়, তাহলে
    • রিটার্ন n
  • ab :=lcm(a, b), bc :=lcm(b, c), ca :=lcm(a, c)
  • abc :=lcm(ab, c)
  • বামে :=1, ডানে :=10^9
  • যখন বামে <=ডানে, কর
    • মাঝে :=(বাম + ডান) / 2
    • na :=মধ্য / a এর ভাগফল
    • nb :=মধ্য / b এর ভাগফল
    • nc :=মধ্য / c এর ভাগফল
    • nab :=মধ্য / ab এর ভাগফল
    • nbc :=মধ্য / bc এর ভাগফল
    • nca :=মধ্য / ca এর ভাগফল
    • nabc :=মধ্য / abc এর ভাগফল
    • সংখ্যা :=na + nb + nc - nab - nbc - nca + nabc
    • সংখ্যা হলে> n, তারপর
      • ডান:=মধ্য - 1
    • অন্যথায় যখন সংখ্যা
    • বাম:=মধ্য + 1
  • অন্যথায়,
    • রিটার্ন মাঝামাঝি - ন্যূনতম (মিড মোড এ, মিড মোড বি, মিড মোড গ)
  • রিটার্ন -1
  • উদাহরণ (পাইথন)

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

    import math
    def lcm(a, b):
       return (a * b) // math.gcd(a, b)
    class Solution:
       def solve(self, n, a, b, c):
          if min(a, b, c) == 1:
             return n
          ab, bc, ca = lcm(a, b), lcm(b, c), lcm(a, c)
          abc = lcm(ab, c)
          left, right = 1, 10 ** 9
          while left <= right:
             mid = (left + right) // 2
             na = mid // a
             nb = mid // b
             nc = mid // c
             nab = mid // ab
             nbc = mid // bc
             nca = mid // ca
             nabc = mid // abc
             numterms = na + nb + nc - nab - nbc - nca + nabc
             if numterms > n:
                right = mid - 1
             elif numterms < n:
                left = mid + 1
             else:
                return mid - min(mid % a, mid % b, mid % c)
          return -1
    ob = Solution()
    n = 8
    a = 3
    b = 7
    c = 9
    print(ob.solve(n, a, b, c))

    ইনপুট

    8, 3, 7, 9

    আউটপুট

    18

    1. পাইথনে দীর্ঘতম ধারাবাহিক অনুক্রমের দৈর্ঘ্য খুঁজে বের করার প্রোগ্রাম

    2. পাইথনে Nth ফিবোনাচি নম্বর খুঁজে বের করার প্রোগ্রাম

    3. পাইথনে প্রদত্ত স্ট্রিং সিকোয়েন্সের নিয়ম অনুসরণ করার পর nম ক্রম খুঁজে বের করার প্রোগ্রাম

    4. পাইথনে একটি প্রদত্ত পুনরাবৃত্তি সম্পর্কের nম পদ খুঁজুন