CMU Coding Bootcamp
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!")