解題思路:
(1)首先需要判斷bound的範圍,小於等於1是不存在滿足情況的數的
(2)其次需要判斷x,y的值,如果都是1的話,那麼只有2滿足情況
(3)最後需要判斷的是,如果其中有一個爲1,那麼這個數是不需要迭代多次的
(4)我這個方法不是很好,耗時比較久,可以去leetcode上參考別人的代碼
class Solution {
public:
vector<int> powerfulIntegers(int x, int y, int bound) {
vector<int> v;
if(bound<=1) return v;
if(x==1 && y==1) {
v.push_back(2);
return v;
}
int a,b;
a=max(x,y);
b=min(x,y);
for(int i=2;i<=bound;i++) {
if(Judge(i,a,b)) {
v.push_back(i);
}
}
return v;
}
bool Judge(int bound,int a,int b) {
int i=0,j=0,suma=1,sumb=1;
while(suma<bound) {
sumb=1;
if(b!=1){
while(suma+sumb<bound) {
sumb*=b;
}
}
if(suma+sumb==bound) return true;
else suma*=a;
}
return false;
}
};