一元多項式的乘法與加法運算

2021-10-02 12:55:29 字數 1668 閱讀 8566

題目:

設計函式分別求兩個一元多項式的乘積與和。

輸入格式:

輸入分2行,每行分別先給出多項式非零項的個數,再以指數遞降方式輸入乙個多項式非零項係數和指數(絕對值均為不超過1000的整數)。數字間以空格分隔。

輸出格式:

輸出分2行,分別以指數遞降方式輸出乘積多項式以及和多項式非零項的係數和指數。數字間以空格分隔,但結尾不能有多餘空格。零多項式應輸出0 0。

輸入樣例:

4 3 4 -5 2 6 1 -2 0

3 5 20 -7 4 3 1

輸出樣例:

15 24 -25 22 30 21 -10 20 -21 8 35 6 -33 5 14 4 -15 3 18 2 -6 1

5 20 -4 4 -5 2 9 1 -2 0

思路:

每個多項式用兩個陣列來儲存,乙個儲存係數,乙個儲存所對應的指數。

乘法和加法的運算結果也需要分別使用兩個陣列儲存。

加法運算:對兩個一元多項式按指數進行排序,並合併同類項

乘法運算:乙個多項式的每一項乘以另乙個多項式的每一項,遵循係數相乘,指數相加的原理,再將結果按照加法那樣排序合併同類項

**:

# include

# include

intmain()

//排序 + 合併同類項

for(i=

0; i)for

(j=i+

1; j(d[i]

== d[j]

)//合併同類項

else}}

//輸出

for(i=

0; i(d[i]

)//係數!=0才能輸出內容 if(

!flag)

//flag為零多項式的標識,當flag=0,說明運算的結果為零多項式

printf

("0 0");

printf

("\n");

//加法運算 兩一元多項式進行對比

//如果有乙個一元多項式全部比較完,則另乙個的剩下的係數和指數直接追加在c和c後面

i =0, j =

0, k =

0, flag =0;

while

(ielse

if(a[i]

== b[j]

)else

k++;}

else

if(a[i]

< b[j])}

if(i == n)

while

(j < m)

if(j == m)

while

(ifor(i=

0; iif(

!flag)

printf

("0 0");

return0;

}

一元多項式的乘法與加法運算

設計函式分別求兩個一元多項式的乘積與和。輸入分2行,每行分別先給出多項式非零項的個數,再以指數遞降方式輸入乙個多項式非零項係數和指數 絕對值均為不超過1000的整數 數字間以空格分隔。輸出分2行,分別以指數遞降方式輸出乘積多項式以及和多項式非零項的係數和指數。數字間以空格分隔,但結尾不能有多餘空格。...

一元多項式的乘法與加法運算

設計函式分別求兩個一元多項式的乘積與和。輸入分2行,每行分別先給出多項式非零項的個數,再以指數遞降方式輸入乙個多項式非零項係數和指數 絕對值均為不超過1000的整數 數字間以空格分隔。輸出分2行,分別以指數遞降方式輸出乘積多項式以及和多項式非零項的係數和指數。數字間以空格分隔,但結尾不能有多餘空格。...

一元多項式的乘法與加法運算

設計函式分別求兩個一元多項式的乘積與和。輸入分2行,每行分別先給出多項式非零項的個數,再以指數遞降方式輸入乙個多項式非零項係數和指數 絕對值均為不超過1000的整數 數字間以空格分隔。輸出分2行,分別以指數遞降方式輸出乘積多項式以及和多項式非零項的係數和指數。數字間以空格分隔,但結尾不能有多餘空格。...