



"""simple docstring"""


def  lowercase	(      _SCREAMING_SNAKE_CASE   :						int				):






				'''simple docstring'''



				if divisor % 5 == 0 or divisor % 2 == 0:
								return 0
				_UpperCAmelCase					=    1
				_UpperCAmelCase					=    1
				while repunit:
								_UpperCAmelCase					=    (10 * repunit + 1) % divisor
								repunit_index += 1
				return repunit_index







def  lowercase	(      _SCREAMING_SNAKE_CASE   :						int = 100_0000				):






				'''simple docstring'''



				_UpperCAmelCase					=    limit - 1
				if divisor % 2 == 0:
								divisor += 1
				while least_divisible_repunit(_SCREAMING_SNAKE_CASE				) <= limit:
								divisor += 2
				return divisor


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








"""simple docstring"""


from collections.abc import Callable
from math import pi, sqrt
from random import uniform
from statistics import mean







def  lowercase	(      _SCREAMING_SNAKE_CASE   :						int				):






				'''simple docstring'''



				def is_in_circle(_SCREAMING_SNAKE_CASE   :						float					,     _SCREAMING_SNAKE_CASE   :						float				) -> bool:
								_UpperCAmelCase					=    sqrt((x**2) + (y**2)				)
								# Our circle has a radius of 1, so a distance
								# greater than 1 would land outside the circle.
								return distance_from_centre <= 1

				# The proportion of guesses that landed in the circle
				_UpperCAmelCase					=    mean(
				    int(is_in_circle(uniform(-1.0					,     1.0				)					,     uniform(-1.0					,     1.0				)				)				)
				    for _ in range(_SCREAMING_SNAKE_CASE				)				)
				# The ratio of the area for circle to square is pi/4.
				_UpperCAmelCase					=    proportion * 4
				print(f'The estimated value of pi is {pi_estimate}'				)
				print(f'The numpy value of pi is {pi}'				)
				print(f'The total error is {abs(pi - pi_estimate				)}'				)







def  lowercase	(      _SCREAMING_SNAKE_CASE   :						int					,     _SCREAMING_SNAKE_CASE   :						Callable[[float], float]					,     _SCREAMING_SNAKE_CASE   :						float = 0.0					,     _SCREAMING_SNAKE_CASE   :						float = 1.0					,     ):






				'''simple docstring'''



				return mean(
				    function_to_integrate(uniform(_SCREAMING_SNAKE_CASE					,     _SCREAMING_SNAKE_CASE				)				) for _ in range(_SCREAMING_SNAKE_CASE				)				) * (max_value - min_value)







def  lowercase	(      _SCREAMING_SNAKE_CASE   :						int					,     _SCREAMING_SNAKE_CASE   :						float = 0.0					,     _SCREAMING_SNAKE_CASE   :						float = 1.0				):






				'''simple docstring'''



				def identity_function(_SCREAMING_SNAKE_CASE   :						float				) -> float:
								return x

				_UpperCAmelCase					=    area_under_curve_estimator(
				    _SCREAMING_SNAKE_CASE					,     _SCREAMING_SNAKE_CASE					,     _SCREAMING_SNAKE_CASE					,     _SCREAMING_SNAKE_CASE				)
				_UpperCAmelCase					=    (max_value * max_value - min_value * min_value) / 2

				print('''******************'''				)
				print(f'Estimating area under y=x where x varies from {min_value} to {max_value}'				)
				print(f'Estimated value is {estimated_value}'				)
				print(f'Expected value is {expected_value}'				)
				print(f'Total error is {abs(estimated_value - expected_value				)}'				)
				print('''******************'''				)







def  lowercase	(      _SCREAMING_SNAKE_CASE   :						int				):






				'''simple docstring'''



				def function_to_integrate(_SCREAMING_SNAKE_CASE   :						float				) -> float:
								return sqrt(4.0 - x * x				)

				_UpperCAmelCase					=    area_under_curve_estimator(
				    _SCREAMING_SNAKE_CASE					,     _SCREAMING_SNAKE_CASE					,     0.0					,     2.0				)

				print('''******************'''				)
				print('''Estimating pi using area_under_curve_estimator'''				)
				print(f'Estimated value is {estimated_value}'				)
				print(f'Expected value is {pi}'				)
				print(f'Total error is {abs(estimated_value - pi				)}'				)
				print('''******************'''				)


if __name__ == "__main__":
					import doctest

					doctest.testmod()



