কম্পিউটার

পাইথনে শক্তিশালী পূর্ণসংখ্যা


ধরুন আমাদের দুটি ধনাত্মক পূর্ণসংখ্যা x এবং y আছে, আমরা বলতে পারি একটি পূর্ণসংখ্যা শক্তিশালী যদি কিছু পূর্ণসংখ্যা i>=0 এবং j>=0 এর জন্য x^i + y^j এর সমান হয়। আমাদের সবগুলোর একটি তালিকা খুঁজে বের করতে হবে। -শক্তিশালী পূর্ণসংখ্যা যার মান আবদ্ধ থেকে কম বা সমান।

সুতরাং, যদি ইনপুট হয় x =2 এবং y =3 এবং বাউন্ড 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 কে 0 হিসাবে শুরু করুন
  • res:=একটি নতুন তালিকা
  • যদি x 1 এর মত হয় এবং y 1 এর মত হয়, তাহলে
    • যদি আবদ্ধ>=2, তারপর
      • res এর শেষে 2 ঢোকান
    • অন্যথায় যখন x 1 এর মত হয়, তখন
      • যখন y^b + 1 <=আবদ্ধ, do
        • res-এ y^b + 1 ঢোকান
        • b :=b + 1
    • অন্যথায় যখন y 1 এর মত হয়, তখন
      • যখন x^a + 1 <=আবদ্ধ, কর
        • রেজে x^a + 1 ঢোকান
        • a :=a + 1
    • অন্যথায়,
      • যখন x^a + 1<=bound, do
        • যদি 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. পাইথনে লগ ইন করা হচ্ছে

  3. পাইথনে ক্যালেন্ডার

  4. পাইথনে ফ্রোজেনসেট()