假设我们有一个k位数字N。当每个数字的k次幂加到N时,N是一个Armstrong数字。因此,如果它是Armstrong数字,则必须返回true,否则返回false。
为了解决这个问题,我们将遵循以下步骤-
幂:=数字位数
温度:= n,res = 0
当温度不为0时
res:= res +(temp mod 10)^幂
temp:= temp / 10 //整数除法
如果res = n,则返回true,否则返回false。
让我们看下面的实现以更好地理解-
import math class Solution(object): def poww(self,base,power): res = 1 while power: if power & 1: res *= base base *= base power>>=1 return res def isArmstrong(self, n): power =int(math.log10(n)) + 1 temp = n res = 0 while temp: res += (self.poww(temp%10,power)) temp//=10 return res == n ob1 = Solution() print(ob1.isArmstrong(153))
153
输出结果
true