


"""simple docstring"""







import math




def      UpperCAmelCase__ (lowerCAmelCase_						,		lowerCAmelCase_     ):




					'''simple docstring'''


					if (
					    not isinstance(lowerCAmelCase_						,		(int, float)     )
					    or power_factor < -1
					    or power_factor > 1
					):
										raise ValueError("power_factor must be a valid float value between -1 and 1."     )
					return apparent_power * power_factor




def      UpperCAmelCase__ (lowerCAmelCase_						,		lowerCAmelCase_     ):




					'''simple docstring'''


					if (
					    not isinstance(lowerCAmelCase_						,		(int, float)     )
					    or power_factor < -1
					    or power_factor > 1
					):
										raise ValueError("power_factor must be a valid float value between -1 and 1."     )
					return apparent_power * math.sqrt(1 - power_factor**2     )


if __name__ == "__main__":
		import doctest

		doctest.testmod()




"""simple docstring"""







import functools




def      UpperCAmelCase__ (lowerCAmelCase_						,		lowerCAmelCase_     ):




					'''simple docstring'''


					if not isinstance(lowerCAmelCase_						,		lowerCAmelCase_     ) or not all(isinstance(lowerCAmelCase_						,		lowerCAmelCase_     ) for day in days     ):
										raise ValueError("The parameter days should be a list of integers"     )

					if len(lowerCAmelCase_     ) != 3 or not all(isinstance(lowerCAmelCase_						,		lowerCAmelCase_     ) for cost in costs     ):
										raise ValueError("The parameter costs should be a list of three integers"     )

					if len(lowerCAmelCase_     ) == 0:
										return 0

					if min(lowerCAmelCase_     ) <= 0:
										raise ValueError("All days elements should be greater than 0"     )

					if max(lowerCAmelCase_     ) >= 366:
										raise ValueError("All days elements should be less than 366"     )

					__SCREAMING_SNAKE_CASE		     =       set(lowerCAmelCase_     )

					@functools.cache
					def dynamic_programming(lowerCAmelCase_     ) -> int:
										if index > 365:
															return 0

										if index not in days_set:
															return dynamic_programming(index + 1     )

										return min(
										    costs[0] + dynamic_programming(index + 1     )						,		costs[1] + dynamic_programming(index + 7     )						,		costs[2] + dynamic_programming(index + 30     )						,		)

					return dynamic_programming(1     )


if __name__ == "__main__":
		import doctest

		doctest.testmod()
