326. Power of Three
原文题目:
读题:
题目很简单,就看是不是3的次方,如果是那当然能够被3整除,并且不断除以3之后,最后结果为1
但题目不推荐这种解法,题目希望能够不用递归或者循环,有几种解法如下:
循环实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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的次方数
1 2 3 4 5 6 7 8 9 | 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的次方数必然能够被这个数整除,因此
1 2 3 4 5 6 | class Solution { public : bool isPowerOfThree( int n) { return n>0?!(1162261467 % n):0; } }; |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步