



"""simple docstring"""




import math
from timeit import timeit





def 						a__     (						_UpperCamelCase     :	int							):
   __lowerCamelCase  							=      0
   __lowerCamelCase  							=      abs(_A							)
   while True:
      __lowerCamelCase  							=      n // 10
      digits += 1
      if n == 0:
         break
   return digits





def 						a__     (						_UpperCamelCase     :	int							):
   return 1 if n == 0 else math.floor(math.log(abs(_A							)	,10							) + 1							)





def 						a__     (						_UpperCamelCase     :	int							):
   return len(str(abs(_A							)							)							)





def 						a__     (						):
   from collections.abc import Callable

   def benchmark_a_function(_UpperCamelCase     :	Callable	,_UpperCamelCase     :	int							) -> None:
      __lowerCamelCase  							=      F"""{func.__name__}({value})"""
      __lowerCamelCase  							=      timeit(F"""__main__.{call}"""	,setup='''import __main__'''							)
      print(F"""{call}: {func(_A							)} -- {timing} seconds"""							)

   for value in (26_21_44, 11_25_89_99_06_84_26_24, 1_26_76_50_60_02_28_22_94_01_49_67_03_20_53_76):
      for func in (num_digits, num_digits_fast, num_digits_faster):
         benchmark_a_function(_A	,_A							)
      print()


if __name__ == "__main__":
  import doctest

  doctest.testmod()
  benchmark()











def 						a__     (						_UpperCamelCase     :	list	,_UpperCamelCase     :	list	,_UpperCamelCase     :	list	,_UpperCamelCase     :	int	,_UpperCamelCase     :	int							):
   if target == 0:
      answer.append(path.copy()							)
   else:
      for index in range(_UpperCamelCase	,len(_UpperCamelCase							)							):
         if target >= candidates[index]:
            path.append(candidates[index]							)
            backtrack(_UpperCamelCase	,_UpperCamelCase	,_UpperCamelCase	,target - candidates[index]	,_UpperCamelCase							)
            path.pop(len(_UpperCamelCase							) - 1							)





def 						a__     (						_UpperCamelCase     :	list	,_UpperCamelCase     :	int							):
   __lowerCamelCase  							=      []  # type: list[int]
   __lowerCamelCase  							=      []  # type: list[int]
   backtrack(_UpperCamelCase	,_UpperCamelCase	,_UpperCamelCase	,_UpperCamelCase	,0							)
   return answer





def 						a__     (						):
   print(combination_sum([-8, 2.3, 0]	,1							)							)


if __name__ == "__main__":
  import doctest

  doctest.testmod()
  main()






