Computer >> Máy Tính >  >> Lập trình >> Python

Số nguyên mạnh mẽ trong Python

Giả sử chúng ta có hai số nguyên dương x và y, chúng ta có thể nói một số nguyên là mạnh nếu nó bằng x ^ i + y ^ j với một số số nguyên i> =0 và j> =0. Chúng ta phải tìm một danh sách tất cả -số nguyên mạnh mẽ có giá trị nhỏ hơn hoặc bằng bị ràng buộc.

Vì vậy, nếu đầu vào là x =2 và y =3 và giới hạn là 10, thì đầu ra sẽ là [2,3,4,5,7,9,10], như 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

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • khởi tạo a, b dưới dạng 0
  • res:=một danh sách mới
  • nếu x giống 1 và y giống 1 thì
    • nếu ràng buộc> =2, thì
      • chèn 2 vào cuối res
    • ngược lại khi x giống 1 thì
      • trong khi y ^ b + 1 <=ràng buộc, thực hiện
        • chèn y ^ b + 1 vào res
        • b:=b + 1
    • ngược lại khi y giống 1 thì
      • while x ^ a + 1 <=bind, do
        • chèn x ^ a + 1 vào res
        • a:=a + 1
    • nếu không,
      • while x ^ a + 1 <=bind, do
        • nếu x ^ a + y ^ b <=ràng buộc, thì
          • b:=b + 1
        • nếu không,
          • a:=a + 1
          • b:=0

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

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))

Đầu vào

2,3,10

Đầu ra

[2, 3, 4, 5, 7, 9, 10]