PAT (Advanced Level) Practice 1002 A+B for Polynomials
Topic Description:
This time, you are supposed to find A+B where A and B are two polynomials.
Input Specification:
Each input file contains one test case. Each case occupies 2 lines, and each line contains the information of a polynomial:
KN1aN1N2aN2 ... NKaNkK N_1 a_{N_1} N_2 a_{N_2} \ ... \ N_K a_{N_k}KN1aN1N2aN2 ... NKaNk
where KKK is the number of nonzero terms in the polynomial, NiN_iNi and aNi(i=1,2,⋯,K)a_{N_i}(i=1,2,⋯,K)aNi(i=1,2,⋯,K) are the exponents and coefficients, respectively. It is given that 1≤K≤10,0≤NK<⋯<N2<N1≤1000.1≤K≤10,0≤N_K
<⋯<N_2<N_1≤1000.1≤K≤10,0≤NK<⋯<N2<N1≤1000.
Output Specification:
For each test case you should output the sum of AAA and BBB in one line, with the same format as the input. Notice that there must be NO extra space at the end of each line. Please be accurate to 1 decimal place.
Sample Test:
Sample Input1:
2 1 2.4 0 3.2
2 2 1.5 1 0.5
Sample Output1:
3 2 1.5 1 2.9 0 3.2
Simple analysis:
- None
My codes:
#include <iostream>
using namespace std;
const int N = 1010;
float c[N];
int main() {
int k;
int ex;
float co;
scanf("%d", &k);
for (int i = 0; i < k; i ++){
scanf("%d%f", &ex, &co);
c[ex] += co;
}
scanf("%d", &k);
for (int i = 0; i < k; i++) {
scanf("%d%f", &ex, &co);
c[ex] += co;
}
int cnt = 0;
for (int i = 0; i < N; i++) {
if (c[i] != 0) cnt++;
}
printf("%d", cnt);
for (int i = N; i >= 0; i--) {
if (c[i] != 0.0)
printf(" %d %.1f", i, c[i]);
}
return 0;
}
本文介绍了一道关于多项式加法的PAT高级题目,涉及输入两个多项式,计算它们的和,并以与输入相同格式输出。通过实例和代码实现,探讨了如何高效处理多项式系数和指数的计算。
339

被折叠的 条评论
为什么被折叠?



