

'''simple docstring'''






import unittest
from timeit import timeit


def 					__lowerCamelCase			(      SCREAMING_SNAKE_CASE_     :	int  ,  SCREAMING_SNAKE_CASE_     :	int    )							->   int:
      """simple docstring"""

      SCREAMING_SNAKE_CASE_      :			Optional[Any]     =       first_num if first_num >= second_num else second_num
      SCREAMING_SNAKE_CASE_      :			str     =       max_num
      while (common_mult % first_num > 0) or (common_mult % second_num > 0):
            common_mult += max_num
      return common_mult


def 					__lowerCamelCase			(      SCREAMING_SNAKE_CASE_     :	int  ,  SCREAMING_SNAKE_CASE_     :	int    )							->   int:
      """simple docstring"""

      return b if a == 0 else greatest_common_divisor(b % a  ,  SCREAMING_SNAKE_CASE_    )


def 					__lowerCamelCase			(      SCREAMING_SNAKE_CASE_     :	int  ,  SCREAMING_SNAKE_CASE_     :	int    )							->   int:
      """simple docstring"""

      return first_num // greatest_common_divisor(SCREAMING_SNAKE_CASE_  ,  SCREAMING_SNAKE_CASE_    ) * second_num


def 					__lowerCamelCase			(      )							->   Optional[int]:
      """simple docstring"""

      SCREAMING_SNAKE_CASE_      :			List[Any]     =       (
          "from __main__ import least_common_multiple_slow, least_common_multiple_fast"
      )
      print(
          "least_common_multiple_slow():"  ,  timeit("least_common_multiple_slow(1000, 999)"  ,  setup=SCREAMING_SNAKE_CASE_    )  ,  )
      print(
          "least_common_multiple_fast():"  ,  timeit("least_common_multiple_fast(1000, 999)"  ,  setup=SCREAMING_SNAKE_CASE_    )  ,  )
class 	SCREAMING_SNAKE_CASE__			(				unittest.TestCase      ):
    _A			    =							(
        (10, 20),
        (13, 15),
        (4, 31),
        (10, 42),
        (43, 34),
        (5, 12),
        (12, 25),
        (10, 25),
        (6, 9),
    )
    _A			    =							(20, 195, 124, 210, 1_462, 60, 300, 50, 18)




    def   __lowerCamelCase      (					self			):






          """simple docstring"""






          for i, (first_num, second_num) in enumerate(self.test_inputs			):
                SCREAMING_SNAKE_CASE_      :			List[Any]     =       least_common_multiple_slow(lowercase__				,     lowercase__			)
                SCREAMING_SNAKE_CASE_      :			List[str]     =       least_common_multiple_fast(lowercase__				,     lowercase__			)
                with self.subTest(i=lowercase__			):
                      self.assertEqual(lowercase__				,     self.expected_results[i]			)
                      self.assertEqual(lowercase__				,     self.expected_results[i]			)


if __name__ == "__main__":
      benchmark()
      unittest.main()






from __future__ import annotations

from pathlib import Path







def 				A			(		__UpperCAmelCase							,					__UpperCAmelCase	)       ->       int:



						'''simple docstring'''






						return pointa[0] * pointa[1] - pointa[1] * pointa[0]







def 				A			(		__UpperCAmelCase							,					__UpperCAmelCase							,					__UpperCAmelCase							,					__UpperCAmelCase							,					__UpperCAmelCase							,					__UpperCAmelCase	)       ->       bool:



						'''simple docstring'''






						UpperCAmelCase_     							=     (xa, ya)
						UpperCAmelCase_     							=     (xa - xa, ya - ya)
						UpperCAmelCase_     							=     (xa - xa, ya - ya)
						UpperCAmelCase_     							=     -vector_product(__UpperCAmelCase							,					__UpperCAmelCase	) / vector_product(
						    __UpperCAmelCase							,					__UpperCAmelCase	)
						UpperCAmelCase_     							=     +vector_product(__UpperCAmelCase							,					__UpperCAmelCase	) / vector_product(
						    __UpperCAmelCase							,					__UpperCAmelCase	)

						return a > 0 and b > 0 and a + b < 1







def 				A			(		__UpperCAmelCase = "p102_triangles.txt"	)       ->       int:



						'''simple docstring'''






						UpperCAmelCase_     							=     Path(__UpperCAmelCase	).parent.joinpath(__UpperCAmelCase	).read_text(encoding='''utf-8'''	)

						UpperCAmelCase_     							=     []
						for line in data.strip().split('''\n'''	):
												triangles.append([int(__UpperCAmelCase	) for number in line.split(''','''	)]	)

						UpperCAmelCase_     							=     0
						UpperCAmelCase_     							=     42

						for triangle in triangles:
												ret += contains_origin(*__UpperCAmelCase	)

						return ret


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





