__lowerCamelCase     :					List[str]				  =						(1, 153, 370, 371, 1634, 2467_8051, 115_1322_1901_8763_9925_6509_5597_9739_7152_2401)
__lowerCamelCase     :					tuple				  =						(-153, -1, 0, 1.2, 200, "A", [], {}, None)



def       __SCREAMING_SNAKE_CASE    (   __UpperCamelCase       :			int      )				->   bool:







  """simple docstring"""





  if not isinstance(__UpperCamelCase					,	__UpperCamelCase      ) or n < 1:
    return False

  # Initialization of sum and number of digits.
  SCREAMING_SNAKE_CASE__     				= 0
  SCREAMING_SNAKE_CASE__     				= 0
  SCREAMING_SNAKE_CASE__     				= n
  # Calculation of digits of the number
  while temp > 0:
    number_of_digits += 1
    temp //= 10
  # Dividing number into separate digits and find Armstrong number
  SCREAMING_SNAKE_CASE__     				= n
  while temp > 0:
    SCREAMING_SNAKE_CASE__     				= temp % 10
    total += rem**number_of_digits
    temp //= 10
  return n == total



def       __SCREAMING_SNAKE_CASE    (   __UpperCamelCase       :			int      )				->   bool:







  """simple docstring"""





  if not isinstance(__UpperCamelCase					,	__UpperCamelCase      ) or n < 1:
    return False

  # Init a "histogram" of the digits
  SCREAMING_SNAKE_CASE__     				= [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
  SCREAMING_SNAKE_CASE__     				= 0
  SCREAMING_SNAKE_CASE__     				= 0
  SCREAMING_SNAKE_CASE__     				= n
  while temp > 0:
    SCREAMING_SNAKE_CASE__				,	SCREAMING_SNAKE_CASE__     				= divmod(__UpperCamelCase					,	10      )
    digit_histogram[rem] += 1
    digit_total += 1

  for cnt, i in zip(__UpperCamelCase					,	range(len(__UpperCamelCase      )      )      ):
    total += cnt * i**digit_total

  return n == total



def       __SCREAMING_SNAKE_CASE    (   __UpperCamelCase       :			int      )				->   bool:







  """simple docstring"""





  if not isinstance(__UpperCamelCase					,	__UpperCamelCase      ) or n < 1:
    return False
  SCREAMING_SNAKE_CASE__     				= len(str(__UpperCamelCase      )      )  # the power that all digits will be raised to
  # check if sum of each digit multiplied expo times is equal to number
  return n == sum(int(__UpperCamelCase      ) ** expo for i in str(__UpperCamelCase      )      )



def       __SCREAMING_SNAKE_CASE    (   )				->   int:







  """simple docstring"""





  SCREAMING_SNAKE_CASE__     				= int(input("""Enter an integer to see if it is an Armstrong number: """      ).strip()      )
  print(f"""{num} is {'' if armstrong_number(__UpperCamelCase      ) else 'not '}an Armstrong number."""      )
  print(f"""{num} is {'' if narcissistic_number(__UpperCamelCase      ) else 'not '}an Armstrong number."""      )
  print(f"""{num} is {'' if pluperfect_number(__UpperCamelCase      ) else 'not '}an Armstrong number."""      )


if __name__ == "__main__":
   import doctest

   doctest.testmod()
   main()

from __future__ import annotations



def       __SCREAMING_SNAKE_CASE    (   __UpperCamelCase       :			str      )				->   bool:







  """simple docstring"""





  SCREAMING_SNAKE_CASE__     				= 42
  SCREAMING_SNAKE_CASE__     				= list(__UpperCamelCase      )
  SCREAMING_SNAKE_CASE__				,	SCREAMING_SNAKE_CASE__     				= _vector[:-1], int(_vector[-1]      )
  SCREAMING_SNAKE_CASE__     				= [int(__UpperCamelCase      ) for digit in __vector]

  vector.reverse()
  for i, digit in enumerate(__UpperCamelCase      ):
    if i & 1 == 0:
      SCREAMING_SNAKE_CASE__     				= digit * 2
      if doubled > 9:
        doubled -= 9
      check_digit += doubled
    else:
      check_digit += digit

  return check_digit % 10 == 0


if __name__ == "__main__":
   import doctest

   doctest.testmod()
   assert is_luhn('''79927398713''')
   assert not is_luhn('''79927398714''')
