"""simple docstring"""






import math_equivalence  # From: git+https://github.com/hendrycks/math.git

import datasets


lowerCAmelCase__						:						Union[str, Any]		  =			"\\n@article{hendrycksmath2021,\n  title={Measuring Mathematical Problem Solving With the MATH Dataset},\n  author={Dan Hendrycks\n    and Collin Burns\n    and Saurav Kadavath\n    and Akul Arora\n    and Steven Basart\n    and Eric Tang\n    and Dawn Song\n    and Jacob Steinhardt},\n  journal={arXiv preprint arXiv:2103.03874},\n  year={2021}\n}\n"


lowerCAmelCase__						:						Optional[int]		  =			"\\nThis metric is used to assess performance on the Mathematics Aptitude Test of Heuristics (MATH) dataset.\nIt first canonicalizes the inputs (e.g., converting \"1/2\" to \"\\frac{1}{2}\") and then computes accuracy.\n"


lowerCAmelCase__						:						str		  =			r"\nCalculates accuracy after canonicalizing inputs.\n\nArgs:\n    predictions: list of predictions to score. Each prediction\n        is a string that contains natural language and LaTex.\n    references: list of reference for each prediction. Each\n        reference is a string that contains natural language\n        and LaTex.\nReturns:\n    accuracy: accuracy after canonicalizing inputs\n        (e.g., converting \"1/2\" to \"\\frac{1}{2}\")\n\nExamples:\n    >>> metric = datasets.load_metric(\"competition_math\")\n    >>> results = metric.compute(references=[\"\\frac{1}{2}\"], predictions=[\"1/2\"])\n    >>> print(results)\n    {'accuracy': 1.0}\n"
@datasets.utils.file_utils.add_end_docstrings(_DESCRIPTION   ,					_KWARGS_DESCRIPTION       )
class        snake_case (				datasets.Metric       ):




					"""simple docstring"""

					def 	__lowerCAmelCase		(       self     :			Any    ):
									return datasets.MetricInfo(
									    description=_DESCRIPTION					,citation=_CITATION					,inputs_description=_KWARGS_DESCRIPTION					,features=datasets.Features(
									        {
									            'predictions': datasets.Value('string'    ),
									            'references': datasets.Value('string'    ),
									        }    )					,homepage='https://github.com/hendrycks/math'					,codebase_urls=['https://github.com/hendrycks/math']					,)







					def 	__lowerCAmelCase		(       self     :			List[str]					,lowerCamelCase__     :			Any					,lowerCamelCase__     :			int    ):
									UpperCAmelCase__    =							0.0
									for i, j in zip(lowercase_					,lowercase_    ):
													n_correct += 1.0 if math_equivalence.is_equiv(lowercase_					,lowercase_    ) else 0.0
									UpperCAmelCase__    =							n_correct / len(lowercase_    )
									return {
									    "accuracy": accuracy,
									}




"""simple docstring"""






from __future__ import annotations

from math import ceil, floor, sqrt



def 						a_		(      lowerCamelCase = 2_0_0_0_0_0_0 ):
				UpperCAmelCase__    =							[0]
				UpperCAmelCase__    =							42

				for idx in range(1      ,    ceil(sqrt(target * 2 ) * 1.1 ) ):
								triangle_numbers.append(triangle_numbers[-1] + idx )

				# we want this to be as close as possible to target
				UpperCAmelCase__    =							0
				# the area corresponding to the grid that gives the product closest to target
				UpperCAmelCase__    =							0
				# an estimate of b, using the quadratic formula
				UpperCAmelCase__    =							42
				# the largest integer less than b_estimate
				UpperCAmelCase__    =							42
				# the largest integer less than b_estimate
				UpperCAmelCase__    =							42
				# the triangle number corresponding to b_floor
				UpperCAmelCase__    =							42
				# the triangle number corresponding to b_ceil
				UpperCAmelCase__    =							42

				for idx_a, triangle_a in enumerate(triangle_numbers[1:]      ,    1 ):
								UpperCAmelCase__    =							(-1 + sqrt(1 + 8 * target / triangle_a )) / 2
								UpperCAmelCase__    =							floor(lowerCamelCase )
								UpperCAmelCase__    =							ceil(lowerCamelCase )
								UpperCAmelCase__    =							triangle_numbers[b_floor]
								UpperCAmelCase__    =							triangle_numbers[b_ceil]

								if abs(target - triangle_b_first_guess * triangle_a ) < abs(
								    target - best_product ):
												UpperCAmelCase__    =							triangle_b_first_guess * triangle_a
												UpperCAmelCase__    =							idx_a * b_floor

								if abs(target - triangle_b_second_guess * triangle_a ) < abs(
								    target - best_product ):
												UpperCAmelCase__    =							triangle_b_second_guess * triangle_a
												UpperCAmelCase__    =							idx_a * b_ceil

				return area


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



