CMU Coding Bootcamp
at main 847 B view raw
1from typing import List 2 3 4def carrylessMultiply(x: int, y: int) -> int: 5 """Multiply 2 numbers without carrying""" 6 str_a = str(x)[::-1] 7 str_b = str(y)[::-1] 8 9 max_len = len(str_a) + len(str_b) 10 pos: List[int] = [0] * max_len 11 for i in range(len(str_a)): 12 for j in range(len(str_b)): 13 pnt = i + j 14 digit_a = int(str_a[i]) 15 digit_b = int(str_b[j]) 16 pos[pnt] += digit_a * digit_b 17 pos[pnt] %= 10 18 result_str = "".join(str(digit) for digit in pos[::-1]).lstrip("0") or "0" 19 return int(result_str) 20 21 22print("Testing carrylessMultiply()...", end="") 23assert carrylessMultiply(3, 3) == 9 24assert carrylessMultiply(4, 4) == 6 25assert carrylessMultiply(12345, 0) == 0 26assert carrylessMultiply(643, 59) == 417 27assert carrylessMultiply(6412, 387) == 807234 28print("Passed!")