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

পাইথনে পাওয়ারফুল ইন্টিজার

মান লেই দুটি পজিটিভ ইন্টিজার x এবং y আছে, আমরা বলতে পারি একটি ইন্টিজার পাওয়ারফুল যদি এটি x^i + y^j সমান হয় কিছু i >= 0 এবং j >= 0 এর জন্য। আমাদের bound-র চেয়ে কম বা সমান সকল পাওয়ারফুল ইন্টিজার বের করতে হবে।

সেজন্য, যদি ইনপুট হয় x = 2, y = 3, bound = 10, তবে আউটপুট হবে [2,3,4,5,7,9,10], কারণ 2 = 2^0 + 3^0, 3 = 2^1 + 3^0, 4 = 2^0 + 3^1, 5 = 2^1 + 3^1, 7 = 2^2 + 3^1, 9 = 2^3 + 3^0, 10 = 2^0 + 3^2।

এটি সমাধান করার জন্য আমরা নিচের ধাপগুলো অনুসরণ করব −

  • a, b ০ দিয়ে ইনিশিয়ালাইজ
  • res := একটি নতুন লিস্ট
  • যদি x == 1 এবং y == 1 হয়, তবে
    • যদি bound >= 2 হয়, তবে
      • res-এ ২ যোগ করুন
  • অন্যথায় যদি x == 1 হয়, তবে
    • যখন y^b + 1 <= bound, লুপ
      • y^b + 1 res-এ যোগ
      • b := b + 1
  • অন্যথায় যদি y == 1 হয়, তবে
    • যখন x^a + 1 <= bound, লুপ
      • x^a + 1 res-এ যোগ
      • a := a + 1
  • অন্যথায়,
    • যখন x^a + 1 <= bound, লুপ
      • যদি x^a + y^b <= bound, তবে
        • res-এ x^a + y^b যোগ
        • b := b + 1
      • অন্যথায়,
        • a := a + 1
        • b := 0

বেস্টার বোঝার জন্য নিচের ইম্প্লিমেন্টেশন দেখুন −

উদাহরণ

class Solution:
    def powerfulIntegers(self, x, y, bound):
        a, b = 0, 0
        res = []
        if x == 1 and y == 1:
            if bound >= 2:
                res.append(2)
        elif x == 1:
            while y**b + 1 <= bound:
                res.append(y**b + 1)
                b += 1
        elif y == 1:
            while x**a + 1 <= bound:
                res.append(x**a + 1)
                a += 1
        else:
            while x**a + 1 <= bound:
                if x**a + y**b <= bound:
                    res.append(x**a + y**b)
                    b += 1
                else:
                    a += 1
                    b = 0
        return list(set(res))

ob = Solution()
print(ob.powerfulIntegers(2, 3, 10))

ইনপুট

2,3,10

আউটপুট

[2, 3, 4, 5, 7, 9, 10]
  1. পাইথনে issuperset() ফাংশন

  2. পাইথনে লগিং (Logging) – সম্পূর্ণ গাইড

  3. পাইথনে ক্যালেন্ডার মডিউল – ক্যালেন্ডার প্রিন্ট, লিপ ইয়ার, মাস রেঞ্জ

  4. পাইথনে frozenset() – মিউটেবল লিস্টকে ইমিউটেবল বানানো