易错点: 答案的系数至少要2001,因为两个最高幂次为1000的多项式相乘,最高次幂可以达到2000.
#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char** argv) {
int n, m, count = 0;
int a;
double arr[1001];
double brr[1001];
double crr[2001] = {
0};
double b;
cin >> n;
while(n--){
cin >> a >> b;
arr[a] = b;
}
cin >> m;
while(m--){
cin >> a >> b;
brr[a] = b;
}
for(int i = 0; i < 1001; i++){
for(int j = 0; j < 1001; j++){
if(arr[i] != 0 && brr[j] != 0){
//cout << "i: " << i << " j: " << j << endl;
crr[j+i] += arr[i] * brr[j];
//cout << j+i << " "<< crr[j+i] << endl;
} else if(arr[i] == 0 && brr[j] == 0) {
continue;
}
}
}
for(int i = 0; i < 2001; i++){
if(crr[i] != 0) {
count++;
}
}
cout << count;
for(int i = 2000; i >= 0; i--){
if(crr[i] != 0){
printf(" %d %.1f", i, crr[i]);
}
}
return 0;
}