多项式加法
两处需要注意的:
- 相加后的多项式的系数如果是0,就不能输出
- 注意C++输出的格式
#include <bits/stdc++.h>
using namespace std;
struct Node { // 自定义存储结构
int exp;
float cof;
};
int main() {
vector<Node>A, B, C;
Node tmp;
int n;
cin >> n;
while(n--) {
cin >> tmp.exp >> tmp.cof;
A.push_back(tmp);
}
cin >> n;
while(n--) {
cin >> tmp.exp >> tmp.cof;
B.push_back(tmp);
}
auto it1 = A.begin(), it2 = B.begin();
while(it1 != A.end() && it2 != B.end()) {
if(it1->exp == it2->exp) {
tmp.exp = it1->exp;
tmp.cof = it1->cof + it2->cof;
if(tmp.cof != 0) { // 注意系数为0的不能要
C.push_back(tmp);
}
it1++;
it2++;
} else if(it1->exp > it2->exp) {
C.push_back(*it1);
it1++;
} else {
C.push_back(*it2);
it2++;
}
}
while(it1 != A.end()) {
if(it1->cof != 0) {
C.push_back(*it1);
}
it1++;
}
while(it2 != B.end()) {
if(it2->cof != 0) {
C.push_back(*it2);
}
it2++;
}
cout << C.size();
for(auto it = C.begin(); it != C.end(); it++) {
cout << " " << it->exp << " ";
printf("%.1f", it->cof); // 注意系数的输出格式
}
return 0;
}