LC 326:3的冪

判斷是否是3的冪次方


問題描述:
給定一個整數,寫一個函數來判斷它是否是 3 的冪次方。

示例 1:

輸入: 27
輸出: true

示例 2:

輸入: 0
輸出: false

示例 3:

輸入: 9
輸出: true

示例 4:

輸入: 45
輸出: false

解題思路:

  找出數字 n 是否是數字 b 的冪的一個簡單方法是,n%b只要餘數爲 0,就一直將 n 除以 b。如果n是b的冪,那麼最終結果肯定是1.
eg.(1)1%3 = =1(true);
     (2)3%3= =0         3/3== 1(true)
     (3)45%3= =0   15%3==0   5%3= =2(false)

代碼如下:

 #include<iostream>
 #include<math.h> 
 using namespace std;
 bool isPowerOfThree(int n) {
		if(n<=0){     //小於0返回false
			return false;
		}
		while(n%3==0){
			n/=3;    //一直將 n 除以 3
		}
		return n==1; //判斷n的最終結果是否爲1
}
int main(){
   	int n;
   	while(cin>>n){
   		if(isPowerOfThree(n)){
   			cout<<"true"<<endl;
   			cout<<"--------------------------"<<endl;
		}else{
			cout<<"false"<<endl;
			cout<<"--------------------------"<<endl;
		}
	}   	
}

在這裏插入圖片描述

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