a1009题解

本题一定要弄清楚 多项式相乘的规则 就可以顺利解出

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

int () {
double P1[1010][2] = {0};
double P2[1010][2] = {0};
double P[2020][2] = {0};
int m;
double e, c;
scanf("%d", &m);
for(int j = 0; j < m; j++) {
scanf("%lf%lf", &e, &c);
P1[(int)e][0] = e;
P1[(int)e][1] = c;
}

scanf("%d", &m);
for(int j = 0; j < m; j++) {
scanf("%lf%lf", &e, &c);
P2[(int)e][0] = e;
P2[(int)e][1] = c;
}
for(int i = 0; i < 1010; i++) {
for(int j = 0; j < 1010; j++) {
if((P1[i][1] != 0) && (P2[j][1] != 0)) {
P[i+j][1] = P[i+j][1] + P1[i][1]*P2[j][1];
P[i+j][0] = (double)(i + j);
}
}
}
int maxn = 0;
for(int i = 0; i < 2020; i++) {
if(P[i][1] != 0) {
maxn++;
}
}
printf("%d", maxn);
for(int i = 2019; i >= 0; i--) {
if(P[i][1] != 0) {
printf(" %d %.1lf", (int)P[i][0], P[i][1]);
}
}
return 0;
}