LeetCode每日打卡 - 4的幂
生活随笔
收集整理的這篇文章主要介紹了
LeetCode每日打卡 - 4的幂
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
不使用循環(huán)來今天解題
public boolean isPowerOfFour(int n) {return n > 0 && (n & (n-1)) == 0 && n % 3==1;}首先去做了2的冪這道題,并了解了n&(n-1)的過程,然后思考一下這道題:求二進(jìn)制中1的個(gè)數(shù),理解了n&(n-1)這個(gè)題就好做了。
public static int xxxxx(int n) {int i = 1;while((n&(n-1)) != 0){i++;}return i;} public boolean isPowerOfTwo(int n) {return n > 0 && (n & (n - 1)) == 0;}與2的冪不同的是4的冪的位數(shù)一定是偶數(shù)個(gè)
看了下題解,如何來獲取位數(shù),但是感覺下面這個(gè)辦法簡單一些
如果 nn 是 44 的冪,那么它可以表示成 4^x4
x
的形式,我們可以發(fā)現(xiàn)它除以 33 的余數(shù)一定為 11,即:
4^x \equiv (3+1)^x \equiv 1^x \equiv 1 \quad (\bmod ~3)
4
x
≡(3+1)
x
≡1
x
≡1(mod 3)
如果 nn 是 22 的冪卻不是 44 的冪,那么它可以表示成 4^x \times 24
x
×2 的形式,此時(shí)它除以 33 的余數(shù)一定為 22。
因此我們可以通過 nn 除以 33 的余數(shù)是否為 11 來判斷 nn 是否是 44 的冪。
總結(jié)
以上是生活随笔為你收集整理的LeetCode每日打卡 - 4的幂的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蜜雪冰城黑化了 结果到底是什么?网友破案
- 下一篇: 抄底腾讯 下注新东方 段永平即将迎来收获