"""simple docstring"""

__lowercase      					=							(1, 153, 370, 371, 1_634, 24_678_051, 115_132_219_018_763_992_565_095_597_973_971_522_401)
__lowercase      					=							(-153, -1, 0, 1.2, 200, "A", [], {}, None)


def 					lowerCAmelCase       (__UpperCamelCase				:  List[str]       ):
							"""simple docstring"""


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

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


def 					lowerCAmelCase       (__UpperCamelCase				:  Dict       ):
							"""simple docstring"""


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

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

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

							return n == total


def 					lowerCAmelCase       (__UpperCamelCase				:  Optional[Any]       ):
							"""simple docstring"""


							if not isinstance(__lowercase				, __lowercase       ) or n < 1:
														return False
							__UpperCamelCase		     =len(str(__lowercase       )       )  # 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(__lowercase       ) ** expo for i in str(__lowercase       )       )


def 					lowerCAmelCase       ():
							"""simple docstring"""


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


if __name__ == "__main__":
				import doctest

				doctest.testmod()
				main()




def 					snake_case						(__lowercase						)       ->       int:

						'''simple docstring'''



						if not isinstance(__lowercase					,			__lowercase						) or number < 0:
												raise ValueError("Input must be a non-negative integer"						)

						_snake_case						:     List[Any]				=    number & ~(number - 1)
						_snake_case						:     Union[str, Any]				=    0
						while intermediate:
												intermediate >>= 1
												index += 1
						return index - 1


if __name__ == "__main__":
				import doctest

				doctest.testmod(verbose=True)