题目
给定两个多项式 $A$ 和 $B$,计算 $A+B$ 的结果。
输入格式
共两行,每行包含一个多项式的信息,格式如下:
$K\ N_1\ a_{N_1}\ N_2\ a_{N_2}\ ……\ N_k\ a_{N_k}$
其中,$K$ 表示多项式中非零项的数量,$N_i$ 和$a_{N_i}$ 分别表示其中一个非零项的指数和系数。
输出格式
按照与输入相同的格式,输出 A+B 的结果。
结果中的各项的系数均保留一位小数。
输入样例:
1
2
2 1 2.4 0 3.2
2 2 1.5 1 0.5
输出样例:
1
3 2 1.5 1 2.9 0 3.2
题解
解法1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
#include <iostream> using namespace std; const int MAX = 1010; double a_a[MAX], b_a[MAX]; int main() { int k; // 读取第一个多项式 cin >> k; while (k--) { int n; double a; cin >> n >> a; a_a[n] = a; } // 读取第二个多项式 cin >> k; while (k--) { int n; double a; cin >> n >> a; b_a[n] = a; } // 相加,计算结果的项数 int count = 0; for (int i = MAX; i >= 0; --i) { b_a[i] += a_a[i]; if(b_a[i]) { count++; } } // 输出结果 printf("%d",count); for (int i = MAX; i >= 0; --i) { if (b_a[i]) { printf(" %d %.1f", i, b_a[i]); } } return 0; }