Умножение больших чисел не используя встроенные библиотеки и знак "*"

Не понимаю как избежать ошибки большого числа. Код рабочий, но не умножает огромные числа. А это необходимо. Использовать библиотеки запрещено. Можно только + и -. Math, decimal тоже нельзя. Вот код:

class Multiply:
    @staticmethod
    def _multiply_numbers(a, b):
        result = 0
        while b:
            if b & 1:
                result += a
            a <<= 1
            b >>= 1
        return result

    @staticmethod
    def insert_decimal_point(number, position):
        str_number = list(str(number))
        str_number.insert(-position, '.')
        result = ''.join(str_number)
        return result

    @staticmethod
    def multiply(x, y):
        decimal_x, decimal_y = str(x).split('.'), str(y).split('.')
        print(decimal_x, decimal_y)
        count_decimal = len(decimal_x[1]) + len(decimal_y[1])
        x, y = int(''.join(decimal_x)), int(''.join(decimal_y))
        print(x, y)
        multiplied_result = Multiply._multiply_numbers(x, y)
        result = Multiply.insert_decimal_point(multiplied_result, count_decimal)
        return result

Ошибка при вводе: x = 123456789456321456987 и y = 12:

  File "C:\Users\Анастасия\Desktop\Projects\calc_test\main.py", line 68, in <module>
    calculator_app.run()
  File "C:\Users\Анастасия\Desktop\Projects\calc_test\main.py", line 49, in run
    print(f'Результат умножения: {self.multiply_obj.multiply(number_1, number_2)}')
  File "C:\Users\Анастасия\Desktop\Projects\calc_test\pkg\multiply.py", line 24, in multiply
    x, y = int(''.join(decimal_x)), int(''.join(decimal_y))
ValueError: invalid literal for int() with base 10: '12345678945632146e+20'

Ответы (0 шт):