解题思路:
(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;
}
};