我們來設想一下,有乙個次數為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...