設計函式分別求兩個一元多項式的乘積與和。
輸入格式:
輸入分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
儘管這道題是操練鍊錶的題,但我還是想用方便的容器來實現一元多項式。在做乘法的時候用到了find,寫的時候感覺會最終在這點超時,結果沒有,開心地過了。在紙頭上用筆自己模擬一遍就能寫出**。加法用的vector,乘法因為一項一項會變亂,所以用set保持排列,具體細節見**。這應該是陳越資料結構mooc的課後作業,乘法和加法一起寫的話**還是有點長度的,140多行呢。
/*
name:7-3 一元多項式的乘法與加法運算(20 分)
author: spencercjh
date: 25/09/17 08:19
description: 資料結構任務一
*/#include
#include
#include
using
namespace
::std;
struct node
bool
operator==(
const node& a)
const};
void
add(vector p1,vector p2)
else
if(p1[i]
.exp.exp)
else
else}}
if(p1.
size()
>p2.
size()
)for
(int i=
min(p1.
size()
,p2.
size()
);isize()
;i++
) ans.
push_back
(p1[i]);
else
if(p1.
size()
size()
)for
(int i=
min(p1.
size()
,p2.
size()
);isize()
;i++
) ans.
push_back
(p2[i]);
if(ans.
size()
==0)for
(int i=
0;isize()
;i++)if
(i!=ans.
size()
-1)printf
("%d %d "
,ans[i]
.a,ans[i]
.exp)
;else
printf
("%d %d"
,ans[i]
.a,ans[i]
.exp)
; cout<}void
mutiplication
(vector p1,vector p2)
if(temp.a==0)
continue
;else
ans.
insert
(temp);}
}auto it=ans.
begin()
;printf
("%d %d"
,it-
>a,it-
>exp)
; it++
;for
(;it!=ans.
end(
);it++
)printf
(" %d %d"
,it-
>a,it-
>exp)
; cout<}int
main()
if(n2==0)
for(
int i=
0;i)return0;
}mutiplication
(p1,p2)
;add
(p1,p2)
;}
一元多項式的乘法與加法運算
設計函式分別求兩個一元多項式的乘積與和。輸入分2行,每行分別先給出多項式非零項的個數,再以指數遞降方式輸入乙個多項式非零項係數和指數 絕對值均為不超過1000的整數 數字間以空格分隔。輸出分2行,分別以指數遞降方式輸出乘積多項式以及和多項式非零項的係數和指數。數字間以空格分隔,但結尾不能有多餘空格。...
一元多項式的乘法與加法運算
設計函式分別求兩個一元多項式的乘積與和。輸入分2行,每行分別先給出多項式非零項的個數,再以指數遞降方式輸入乙個多項式非零項係數和指數 絕對值均為不超過1000的整數 數字間以空格分隔。輸出分2行,分別以指數遞降方式輸出乘積多項式以及和多項式非零項的係數和指數。數字間以空格分隔,但結尾不能有多餘空格。...
一元多項式的乘法與加法運算
設計函式分別求兩個一元多項式的乘積與和。輸入分2行,每行分別先給出多項式非零項的個數,再以指數遞降方式輸入乙個多項式非零項係數和指數 絕對值均為不超過1000的整數 數字間以空格分隔。輸出分2行,分別以指數遞降方式輸出乘積多項式以及和多項式非零項的係數和指數。數字間以空格分隔,但結尾不能有多餘空格。...