题目大意
给你多项式A与B的项数K1、K2,以及每项系数 a i a_i ai, b i b_i bi,阶数 N a i Na_i Nai, N b i Nb_i Nbi,让你求解多项式相加的结果
题解
- 模拟
- 得分点2,阶数可能出现负数的情况,单纯的用数组存储无法涵盖阶数为负数的情况,所以用map存储会比较合适
- 第一遍判断项数的时候其实就可以存储答案了,可以节省时间。
代码
#include <iostream>
#include <map>
using namespace std;
const int maxn = 11111;
//存在阶数为负数的项
map<int, double> x;
int main(){
int k1; cin >> k1;
int n;
double a;
for(int i = 0; i < k1; i++){
scanf("%d %lf", &n, &a);
x[n] += a;
}
int k2; cin >> k2;
for(int i = 0; i < k2; i++){
scanf("%d %lf", &n, &a);
x[n] += a;
}
int ansn = 0;
for(map<int, double>::iterator i = x.begin(); i != x.end(); i++){
if (i->second != 0){ ansn++; }
}
cout << ansn;
int ans1[1000];
double ans2[1000];
int u = 0;
for(map<int, double>::iterator i = x.begin(); i != x.end(); i++){
if (i->second != 0) ans1[u] = i->first, ans2[u++] = i->second;
}
for(int i = u - 1; i >= 0; i--) {
printf(" %d %.1f", ans1[i], ans2[i]);
}
puts("");
}