


'''simple docstring'''
lowerCAmelCase__  =     (1, 1_53, 3_70, 3_71, 16_34, 24_67_80_51, 1_15_13_22_19_01_87_63_99_25_65_09_55_97_97_39_71_52_24_01)
lowerCAmelCase__  =     (-1_53, -1, 0, 1.2, 2_00, "A", [], {}, None)



def 				lowerCAmelCase__	(       UpperCAmelCase     ):






       """simple docstring"""





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

       # Initialization of sum and number of digits.
       snake_case__					:	List[Any]          =					0
       snake_case__					:	Any          =					0
       snake_case__					:	Any          =					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
       snake_case__					:	Tuple          =					n
       while temp > 0:
              snake_case__					:	Any          =					temp % 10
              total += rem**number_of_digits
              temp //= 10
       return n == total



def 				lowerCAmelCase__	(       UpperCAmelCase     ):






       """simple docstring"""





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

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

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

       return n == total



def 				lowerCAmelCase__	(       UpperCAmelCase     ):






       """simple docstring"""





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



def 				lowerCAmelCase__	(       ):






       """simple docstring"""





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


if __name__ == "__main__":
     import doctest

     doctest.testmod()
     main()











from functools import lru_cache







@lru_cache
def      A__				(       SCREAMING_SNAKE_CASE__)  ->       int:
  if not isinstance(SCREAMING_SNAKE_CASE__   ,   SCREAMING_SNAKE_CASE__):
    raise TypeError("""k must be an integer.""")
  if k < 0:
    raise ValueError("""k integer must be greater or equal to zero.""")
  if k == 0:
    return 0
  elif k == 1:
    return 1
  else:
    return fibonacci(k - 1) + fibonacci(k - 2)







def      A__				(       SCREAMING_SNAKE_CASE__   ,   SCREAMING_SNAKE_CASE__)  ->       int:
  __snake_case:		str					    =		len(SCREAMING_SNAKE_CASE__)
  # Find m such that F_m >= n where F_i is the i_th fibonacci number.
  __snake_case:		Optional[int]					    =		0
  while True:
    if fibonacci(SCREAMING_SNAKE_CASE__) >= len_list:
      __snake_case:		str					    =		i
      break
    i += 1
  __snake_case:		Tuple					    =		0
  while fibb_k > 0:
    __snake_case:		str					    =		min(
        offset + fibonacci(fibb_k - 1)   ,   len_list - 1)  # Prevent out of range
    __snake_case:		List[Any]					    =		arr[index_k]
    if item_k_1 == val:
      return index_k
    elif val < item_k_1:
      fibb_k -= 1
    elif val > item_k_1:
      offset += fibonacci(fibb_k - 1)
      fibb_k -= 2
  else:
    return -1


if __name__ == "__main__":
      import doctest

      doctest.testmod()






