秦九韶演算法 高速的多項式運算解決方案

2021-07-22 02:25:41 字數 425 閱讀 9441

我們來設想一下,有乙個次數為5000的多項式,需要10000次代入值查詢,用傳統的計算方法,時間複雜度有多高?

每一次帶入,根據需要2500*5000=1.25*10^7次運算,可以視為o(n^2)

設帶入次數為m,則複雜度為o(m·n^2)=o(1.25*10^11)

有什麼辦法能降低複雜度,讓這個目標在1s內完成呢?

秦九韶演算法就可以做到。通過數學上對多項式的乙個簡單變形,或者說,提公因式,就可以把複雜度降到o(mn)

以下給出具體的實現方法:

#include 

#include

#include

#include

using namespace std;

int main()

return 0; }

2 10 霍納法則 秦九韶演算法 求多項式

p n a0 x0 a1 x1 a2 x2 an xn 定義tmp an 1 0 上推一步 an 1 x an tmp tmp x k n k n 第一步 先求an x an 1 tmp k n x k n 1 第二步 第一步的結果再乘以x an 2。就是 an x an 1 x an 2 k n ...

多項式的冪運算

在寫 過程中發現字元陣列轉字串用.tostring 方法會亂碼,可以用string.valueof argsp 或者用array.tostring args 冪的運算時由於用的是string會出現空間浪費現象,可以用stringbuffer類替換,但是由於計算量不大,所以就沒有改了 package ...

總結 多項式的運算

多項式的小總結 這些運算都是在模意義下進行的運算,但多項式的取模運算與整數的取模運算有些不同。多項式對 x n 取模的意思是捨棄 x n 以及更高次的部分。a x b x equiv 1 pmod 遞迴版 include 遞迴 include using namespace std const in...