1009与1002其实是不同操作的同一道题,因此算法上略有不同但思路大致相似,有了上次的教训,这道题进行的非常顺利,但是在调试代码时也发现了不少小问题,比如只想着要把多项式相乘却忽略了次数相同的项的系数的累加,还有就是数据类型的问题,详见patB 1011 A+B 和 C
#include <iostream>
using namespace std;
int main() {
double p[1001] = {0.0}, re[2001] = {0.0}, a;
int m,n,k;
scanf("%d", &m);
for(int i = 0; i < m; i++){
scanf("%d%lf", &k, &a);
p[k] = a;
}
scanf("%d", &n);
for(int i = 0; i < n; i++){
scanf("%d%lf", &k, &a);
for(int j = 0; j < 1001; j++){
re[k + j] += a * p[j];
}
}
int t = 0;
for(int i = 0; i < 2001; i++){
if(re[i] != 0.0) t++;
}
printf("%d", t);
for(int i = 2000; i >= 0; i--){
if(re[i] != 0.0)
printf(" %d %.1f", i, re[i]);
}
return 0;
}