時間限制:c/c++ 1秒,其他語言2秒
空間限制:c/c++ 262144k,其他語言524288k
64bit io format: %lld
etéreo 吃完了元宵,又開始思考數學問題了。這次他拿了兩個多項式 p\mathscrp 和 q\mathscrq 。他知道這兩個多項式的乘積也是乙個多項式,但他不清楚每一項的係數。所以他又來請問你咯。
輸入共三行。第一行兩個整數 n,mn, mn,m ,表示多項式 p\mathscrp 的最高次項次數 nnn 和 q\mathscrq 的最高次項次數 mmm 。
第二行 n+1n+1n+1 個整數,表示多項式 p\mathscrp 的每一項的係數。按次數從小到大的順序排列。
第三行 m+1m+1m+1 個整數,表示多項式 q\mathscrq 的每一項的係數。按次數從小到大的順序排列。
輸出共一行,n+m+1n+m+1n+m+1 個整數,表示乘積多項式的每一項的係數。按次數從小到大排列。示例1
複製
2 3複製2 1 3
1 2 0 2
2 5 5 10 2 6
(3x2+x+2)×(2x3+2x+1)=(6x5+2x4+10x3+5x2+5x+2)(3x^2 + x + 2) \times (2x^3 + 2x + 1) = (6x^5 + 2x^4 + 10x^3 + 5x^2 + 5x + 2)(3x2+x+2)×(2x3+2x+1)=(6x5+2x4+10x3+5x2+5x+2)
1≤n,m≤5001 \leq n, m \leq 5001≤n,m≤500本來想著有沒有啥公式規律啥的可以直接求出來的,後來發現根本沒有公式,解法就是平時我們數學上算多項式乘法的方法,只不過用c++實現顯得更簡便些而已。−100≤-100 \leq−100≤ 係數 ≤100\leq 100≤100
首先定義a、b陣列,存兩個多項式,然後定義c陣列儲存結果,注意c陣列的大小是a、b陣列大小的相加。用陣列下標來表示某一項的冪,結果中相同的冪相加。
#include #include using namespace std;
typedef long long ll;
const int maxn=1e6+10;
int a[505],b[505],c[2000];
int main()
多項式乘法
l1和l2是兩個帶頭結點的單鏈表表示的多項式,編寫演算法計算兩個多項式的乘積,運算結果仍用單鏈表進行儲存 include using namespace std typedef struct lnode lnode,linkedlist 查詢計算結果應該插入的位置 param l 鍊錶的頭結點指標 ...
多項式加法 乘法
學校acm上面的題目,題目不難,不少細節。本質就是鍊錶操作,首先是題目要求 輸入 兩組資料,每一組代表乙個一元整係數多項式,有多行組成,其中每一行給出多項式每一項的係數和指數,這些行按指數遞減次序排序,每一組結束行為 0 1 輸出 三組資料,前兩組為一元整係數多項式,最後一組為兩個多項式的和。一元整...
多項式乘法逆
多項式乘法 給定乙個 n 次多項式 f x 求 g x 滿足 f x times g x equiv 1 mod x n 假設有乙個 0 次多項式 f x 易得 f x 為 g x 的逆元,這給我們提供了乙個分治的思路。假設已有 g x equiv f x mod x right rceil 我們分...