多項式A除以B(C ) 模擬法解題

2021-10-18 17:44:53 字數 1641 閱讀 2074

這仍然是一道關於a/b的題,只不過a和b都換成了多項式。你需要計算兩個多項式相除的商q和餘r,其中r的階數必須小於b的階數。

輸入分兩行,每行給出乙個非零多項式,先給出a,再給出b。每行的格式如下:

n e[1] c[1] ... e[n] c[n]
其中n是該多項式非零項的個數,e[i]是第i個非零項的指數,c[i]是第i個非零項的係數。各項按照指數遞減的順序給出,保證所有指數是各不相同的非負整數,所有係數是非零整數,所有整數在整型範圍內。

分兩行先後輸出商和餘,輸出格式與輸入格式相同,輸出的係數保留小數點後1位。同行數字間以1個空格分隔,行首尾不得有多餘空格。注意:零多項式是乙個特殊多項式,對應輸出為0 0 0.0。但非零多項式不能輸出零係數(包括捨入後為0.0)的項。在樣例中,餘多項式其實有常數項-1/27,但因其捨入後為0.0,故不輸出。

4 4 1 2 -3 1 -1 0 -1

3 2 3 1 -2 0 1

3 2 0.3 1 0.2 0 -1.0

1 1 -3.1

因為輸入格式中保證所有指數是各不相同的非負整數,然後又說輸出格式與輸入格式相同,就說明不會出現如:x^2 / x^3 這樣的情況,因為這樣輸出的指數為負數了。

然後多項式相除,也就是長除,可以使用豎式進行演算,如對題給樣例進行豎式除法演示,演示如下圖所示:

**如下

#include #include #include using namespace std;

const int maxn = 1e6 + 10;

int b[maxn]; //b用來儲存除數各個項的指數

double a[maxn], c[maxn], d[maxn]; //a[i]=x表示被除數指數為i的項的係數為x,後面還可以用來表示除完後的餘

//c用來儲存除數各個項的係數 d[i]=x表示 商中指數為i的項 並且係數為x

int main()

cin >> m;

for(int i = 0; i < m; i++) cin >> b[i] >> c[i];

int exp_temp;

for(int i = limit; i >= b[0]; i--)

/*分別統計係數不為0的商和餘的項的個數*/

for(int i = limit; i >= 0; i--)

cout << cnt1;

for(int i = limit; i >= 0; i--)

if (cnt1==0) printf(" 0 0.0");

cout << endl;

cout << cnt2;

for(int i = limit; i >= 0; i--)

if (cnt2==0) printf(" 0 0.0");

return 0;

}

pta l2 18(多項式A除以B)

題意 給定兩個多項式,求出其做除法運算的商和餘數。思路 記下除數 被除數的最大指數,按照多項式除法的演算法模擬即可,要注意的是這裡的捨入操作是四捨五入,而不是向下取整,還有浮點運算存在誤差,比如對浮點數f進行判零操作應該 abs f 0.0000001,因為你初始化f 0,在計算機中實際可能存的是0...

7 10 多項式A除以B(25 分)

7 10 多項式a除以b 25 分 這仍然是一道關於a b的題,只不過a和b都換成了多項式。你需要計算兩個多項式相除的商q和餘r,其中r的階數必須小於b的階數。輸入分兩行,每行給出乙個非零多項式,先給出a,再給出b。每行的格式如下 n e 1 c 1 e n c n 其中n是該多項式非零項的個數,e...

再次模擬 多項式輸出

題目描述 一元 n 次多項式可用如下的表示式表示 f x an x n an 1 x n 1 a1 x a0,an 0 其中,ai a x 稱為i次項,ai稱為i次項的係數。給出乙個一元多項式各項的次數和係數,請按照如下規定的格式要求輸出該多項式 多項式中自變數為x,從左到右按照次數遞減順序給出多項...