ধরুন আমাদের দুটি ধনাত্মক পূর্ণসংখ্যা 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^b + 1 <=আবদ্ধ, do
- অন্যথায় যখন y 1 এর মত হয়, তখন
- যখন x^a + 1 <=আবদ্ধ, কর
- রেজে x^a + 1 ঢোকান
- a :=a + 1
- যখন x^a + 1 <=আবদ্ধ, কর
- অন্যথায়,
- যখন x^a + 1<=bound, do
- যদি x^a+y^b <=আবদ্ধ, তাহলে
- b :=b + 1
- অন্যথায়,
- a :=a + 1
- b:=0
- যদি x^a+y^b <=আবদ্ধ, তাহলে
- যখন x^a + 1<=bound, do
- যদি আবদ্ধ>=2, তারপর
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
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]