这是题目
首先可以确定的是,如果n的值为1,3的0次方就是1。
其次,我们可以得知,如果这个n是三的幂的和,那它被三除后得到的余数只能是0或者1(1的情况下是加上了一个3的零次方)。
我们假设一个数是3的x次方加上3的y次方,则它整除到最后得到的值一定是3(这里我们整除到3就可以了,不再往下)。
在此过程中,得到的余数可能是1或2或0,要知道,余数是2的话就一定是错的(需要自己理解一下,余数是1和0的情况下才有可能对。)在余数是1的情况下,我们减去1,得到的就是余数是0.
class Solution:
def checkPowersOfThree(self, n: int) -> bool:
if n==1:
return True
elif n%3==0 or n%3==1:
if n%3==0:
while n>3:
n//=3
if n%3==1:
n-=1
elif n%3==2:
return False
return n==3
elif n%3==1:
n-=1
while n>3:
n//=3
if n%3==1:
n-=1
elif n%3==2:
return False
return n==3
else:
return False