สมมติว่าเรามีจำนวน k หลัก N จำนวน N จะเป็นเลขอาร์มสตรองเมื่อผลรวมของแต่ละหลักยกกำลัง k เท่ากับ N เราต้องคืนค่า true หากเป็นเลขอาร์มสตรอง มิฉะนั้น false
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนต่อไปนี้ −
- power := จำนวนหลัก
- temp := n, res = 0
- while temp ไม่ใช่ 0
- res := res + (temp mod 10) ^ power
- 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