zoukankan      html  css  js  c++  java
  • 326. Power of Three

    原文题目:

    326. Power of Three

    读题:

    题目很简单,就看是不是3的次方,如果是那当然能够被3整除,并且不断除以3之后,最后结果为1

    但题目不推荐这种解法,题目希望能够不用递归或者循环,有几种解法如下:

    循环实现:

    class Solution 
    {
    public:
    	bool isPowerOfThree(int n) 
    	{
    		if (n <1) return false;
    		while(n%3 ==0)
    		{
    			n = n/3;
    		}
    		return n==1;
    	}
    };
    

    列举实现:

    由于是int型,最大正整数为2147483647,列出所有3的次方数

    class Solution {  
    public:  
    	bool isPowerOfThree(int n) {  
    		return (n == 1 || n == 3 || n == 9 || n == 27 || n == 81 || n == 243 || n == 729 
    			|| n == 2187 || n == 6561 || n == 19683 || n == 59049 || n == 177147 || n == 531441 
    			|| n == 1594323 || n == 4782969 || n == 14348907 || n == 43046721 || n == 129140163 
    			|| n == 387420489 || n == 1162261467);  
    	}  
    }; 
    

    找规律:

    由于最大的3的次方数为1162261467,那么其他比这个数小的3的次方数必然能够被这个数整除,因此

    class Solution {  
    public:  
    	bool isPowerOfThree(int n) {  
    		return n>0?!(1162261467 % n):0; 
    	}  
    }; 
    

      

  • 相关阅读:
    upload.go
    heartbeat.go
    delete.go
    get.go
    handler.go
    uuid.go
    kingpin_parser.go
    disk.go
    logrus_hook.go
    反连接NOT EXISTS子查询中有or 谓词连接条件SQL优化一例
  • 原文地址:https://www.cnblogs.com/xqn2017/p/8405238.html
Copyright © 2011-2022 走看看