本體的思路就是模擬多項式的乘法,題目描述如下:
7-2 設計函式分別求兩個一元多項式的乘積與和。對於這個題目,我一開始理解錯誤了題意,經過查閱才知道,這個題目的意思是想要求出輸入分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
3x4-5x2+6x-2與5x20-7x4+3x的乘積(汗,原諒我的理解能力)。
我們可以採用兩個陣列來儲存指數對應的係數,也就是說 對於乙個多項式,我們可以使用num[1000]來代表乙個多項式,其中num[4] = 6就代表6x4,當係數為 0 的時候,這個時候的對應位置的係數就為 0。
所以我們只需要模擬出多項式的乘法和加法即可(這裡的count是用來儲存有多少個不為 0 的項的):
int count1 = 0;
for (int i = 1000; i >= 0; i--)
}
int count;
for (int i = 1000; i >= 0; i--)
所以我們就可以通過模擬來計算出兩個多項式的乘積和加法:
完整**如下:
/*
author: veeupup
一元多項式的乘法和加法運算
設計函式分別求兩個一元多項式的乘積與和。
輸入:輸入分2行,每行分別先給出多項式非零項的個數,
再以指數遞降方式輸入乙個多項式非零項係數和指數(絕對值均為不超過1000的整數)
數字間以空格分隔。
輸出格式可以使用 flag 來使用,而不是通過計數來實現
*/#include #include #include using namespace std;
typedef long long ll;
const int maxn = 2010; // 1000 * 1000 = 1e6
// 數字1 數字2 乘積結果 和結果, 設定為 ll 避免溢位
// 係數都初始化為 0
ll num1[maxn] = , num2[maxn] = , ans1[maxn] = , ans2[maxn] = ;
// 乘法法則
// 指數相加,係數相乘
void multiply()
}int flag = 0;
for (int i = maxn; i >= 0; i--)
else
}if (flag == 0)
printf("\n");
}// 加法法則
// 指數相同的系統相加減
void add()
int flag = 0;
for (int i = 1000; i >= 0; i--)
else
}if(flag == 0)
}int main()
scanf("%d", &n);
for (int i = 0; i < n; i++)
multiply();
add();
return 0;
}
希望對大家有幫助。 PTA 7 2 一元多項式的乘法與加法運算
設計函式分別求兩個一元多項式的乘積與和。輸入格式 輸入分2行,每行分別先給出多項式非零項的個數,再以指數遞降方式輸入 乙個多項式非零項係數和指數 絕對值均為不超過1000的整數 數字間以空格分隔。輸出格式 輸出分2行,分別以指數遞降方式輸出乘積多項式以及和多項式非零項的係數和指數。數字間以空格分隔,...
PTA7 2一元多項式的乘法與加法運算
設計函式分別求兩個一元多項式的乘積與和。輸入格式 輸入分2行,每行分別先給出多項式非零項的個數,再以指數遞降方式輸入乙個多項式非零項係數和指數 絕對值均為不超過1000的整數 數字間以空格分隔。輸出格式 輸出分2行,分別以指數遞降方式輸出乘積多項式以及和多項式非零項的係數和指數。數字間以空格分隔,但...
PTA 7 2 一元多項式的乘法與加法運算
本體的思路就是模擬多項式的乘法,題目描述如下 7 2 設計函式分別求兩個一元多項式的乘積與和。輸入分2行,每行分別先給出多項式非零項的個數,再以指數遞降方式輸入乙個多項式非零項係數和指數 絕對值均為不超過1000的整數 數字間以空格分隔。輸出分2行,分別以指數遞降方式輸出乘積多項式以及和多項式非零項...