我正在训练我的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
我为我的班级重载了*
运算符,但我认为我使用的算法很笨拙。
我打算去Karatsuba algorithm,但由于它是递归的,它会导致堆栈溢出。
然后我检查了Toom-3 algorithm。我喜欢它,但我无法应用它,因为我还没有编写负数。
我的问题是:你建议使用什么算法,最适合多项式乘法?我需要看到哪些好的算法?