Я тренирую свой C ++ и пытаюсь написать библиотеку, которая сможет представлять следующее число, используя связанные списки XOR:
999999999 * ([i = 0]Σ [999999999] 1000000000 ^ i)
Например, если мой номер был 711381450277869054011 , он будет представлен следующим образом:
711 * 1000000000 ^ 2 + 381450277 * 1000000000 ^ 1 + 869054011 * 1000000000 ^ 0
Или просто:
711 * X ^ 2 + 381450277 * X ^ 1 + 869054011 * X ^ 0
Я перегрузил оператор *
для своего класса, но я думаю, что алгоритм, который я использовал,неуклюжий.
Я собирался пойти на алгоритм Карацубы , но так как он рекурсивный, это приведет к переполнению стека.
Затем я проверил Toom-3 алгоритм .Мне понравилось, но я не смог применить его, потому что я еще не запрограммировал отрицательные числа.
Мой вопрос: какой алгоритм вы предлагаете, будет лучше для умножения полиномов?Есть ли какие-нибудь хорошие алгоритмы, которые мне нужно увидеть?