PAT Grade A Zhenti Punch Card: 1002. A+B for Polynomials

topic:

This time, you are supposed to find A+B where A and B are two polynomials.

Input

Each input file contains one test case. Each case occupies 2 lines, and each line contains the information of a polynomial: K N1 aN1 N2 aN2 ... NK aNK, where K is the number of nonzero terms in the polynomial, Ni and aNi (i=1, 2, ..., K) are the exponents and coefficients, respectively. It is given that 1 <= K <= 10,0 <= NK < ... < N2 < N1 <=1000.

 

Output

For each test case you should output the sum of A and B 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 Input

2 1 2.4 0 3.2
2 2 1.5 1 0.5

Sample Output

3 2 1.5 1 2.9 0 3.2

Reference Code:

#include <stdio.h>
#include <string.h>
using namespace std;

double a[1002];
double b[1002];


int main(void) {
int n, i, temp;
memset(a,0, sizeof(a));
memset(b,0, sizeof(b));
scanf("%d", &n);
for(i = 0; i <= n; i++) {
scanf("%d", &temp);
scanf("%lf", &a[temp]);
}
scanf("%d", &n);
for(i = 0; i < n; i++) {
scanf("%d", &temp);
scanf("%lf", &b[temp]);
}
int count = 0;
for (i = 0; i < 1002; i++) {
a[i] += b[i];
if(a[i] != 0)
count++;
}
printf("%d",count);
for(i = 1001; i >= 0; i--) {
if(a[i] != 0) {
count--;
printf(count==0?" %d %.1f\n":" %d %.1f", i, a[i]);
}
}
return 0;
}

analyze:

This is a relatively simple polynomial problem, and you can easily solve it as long as you understand the problem. The key here is input and output.

1. No spaces

2. What to do when the polynomial addition coefficient is 0.

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325193414&siteId=291194637