Giả sử có số N có k chữ số. N là số Armstrong khi tổng lũy thừa bậc k của từng chữ số bằng N. Cần trả về true nếu là số Armstrong, ngược lại false.
Để giải quyết:
- power := số chữ số
- temp := n, res = 0
- Khi temp != 0:
- res := res + (temp % 10) ^ power
- temp := temp // 10 (chia nguyên)
- Nếu res = n, trả về true, ngược lại false
Ví dụ
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))
Đầu vào
153
Kết quả
True