from typing import List def carrylessMultiply(x: int, y: int) -> int: """Multiply 2 numbers without carrying""" str_a = str(x)[::-1] str_b = str(y)[::-1] max_len = len(str_a) + len(str_b) pos: List[int] = [0] * max_len for i in range(len(str_a)): for j in range(len(str_b)): pnt = i + j digit_a = int(str_a[i]) digit_b = int(str_b[j]) pos[pnt] += digit_a * digit_b pos[pnt] %= 10 result_str = "".join(str(digit) for digit in pos[::-1]).lstrip("0") or "0" return int(result_str) print("Testing carrylessMultiply()...", end="") assert carrylessMultiply(3, 3) == 9 assert carrylessMultiply(4, 4) == 6 assert carrylessMultiply(12345, 0) == 0 assert carrylessMultiply(643, 59) == 417 assert carrylessMultiply(6412, 387) == 807234 print("Passed!")