Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬의 암스트롱 숫자


k자리 숫자 N이 있다고 가정합니다. N은 각 숫자의 k번째 거듭제곱이 N일 때 Armstrong 숫자입니다. 따라서 다음과 같은 경우 true를 반환해야 합니다. 암스트롱 번호, 그렇지 않으면 거짓입니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • power :=자릿수
  • temp :=n, res =0
  • 온도가 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