Powerful Integers(C++強整數)

解題思路:

(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;
    }
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章