






'''simple docstring'''





from math import isclose, sqrt



def        __snake_case						(__UpperCAmelCase       ,	__UpperCAmelCase       ,	__UpperCAmelCase    ):





	"""simple docstring"""
	lowerCamelCase_					:  str						=    point_y / 4 / point_x
	lowerCamelCase_					:  Optional[int]						=    2 * normal_gradient / (1 + normal_gradient * normal_gradient)
	lowerCamelCase_					:  Dict						=    (1 - normal_gradient * normal_gradient) / (
	    1 + normal_gradient * normal_gradient
	)
	lowerCamelCase_					:  Union[str, Any]						=    (sa - ca * incoming_gradient) / (ca + sa * incoming_gradient)

	# to find the next point, solve the simultaeneous equations:
	# y^2 + 4x^2 = 100
	# y - b = m * (x - a)
	# ==> A x^2 + B x + C = 0
	lowerCamelCase_					:  List[str]						=    outgoing_gradient**2 + 4
	lowerCamelCase_					:  Union[str, Any]						=    2 * outgoing_gradient * (point_y - outgoing_gradient * point_x)
	lowerCamelCase_					:  List[Any]						=    (point_y - outgoing_gradient * point_x) ** 2 - 100

	lowerCamelCase_					:  int						=    (
	    -linear_term - sqrt(linear_term**2 - 4 * quadratic_term * constant_term    )
	) / (2 * quadratic_term)
	lowerCamelCase_					:  Any						=    (
	    -linear_term + sqrt(linear_term**2 - 4 * quadratic_term * constant_term    )
	) / (2 * quadratic_term)

	# two solutions, one of which is our input point
	lowerCamelCase_					:  List[Any]						=    x_minus if isclose(__UpperCAmelCase       ,	__UpperCAmelCase    ) else x_plus
	lowerCamelCase_					:  Dict						=    point_y + outgoing_gradient * (next_x - point_x)

	return next_x, next_y, outgoing_gradient



def        __snake_case						(__UpperCAmelCase = 1.4       ,	__UpperCAmelCase = -9.6    ):





	"""simple docstring"""
	lowerCamelCase_					:  str						=    0
	lowerCamelCase_					:  int						=    first_x_coord
	lowerCamelCase_					:  Any						=    first_y_coord
	lowerCamelCase_					:  Tuple						=    (10.1 - point_y) / (0.0 - point_x)

	while not (-0.01 <= point_x <= 0.01 and point_y > 0):
		lowerCamelCase_	,				lowerCamelCase_	,				lowerCamelCase_					:  Union[str, Any]						=    next_point(__UpperCAmelCase       ,	__UpperCAmelCase       ,	__UpperCAmelCase    )
		num_reflections += 1

	return num_reflections


if __name__ == "__main__":
			print(f"""{solution() = }""")












'''simple docstring'''







def 						_A      ( UpperCAmelCase = 1      ,UpperCAmelCase = 1000						):






   '''simple docstring'''







   A__       =     1
   A__       =     0

   for divide_by_number in range(UpperCAmelCase      ,digit + 1						):
      A__       =     []
      A__       =     numerator
      for _ in range(1      ,digit + 1						):
         if now_divide in has_been_divided:
            if longest_list_length < len(UpperCAmelCase						):
               A__       =     len(UpperCAmelCase						)
               A__       =     divide_by_number
         else:
            has_been_divided.append(UpperCAmelCase						)
            A__       =     now_divide * 10 % divide_by_number

   return the_digit


# Tests
if __name__ == "__main__":
    import doctest

    doctest.testmod()


