A1009 Product of Polynomials (25 分)

易错点: 答案的系数至少要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;
}

猜你喜欢

转载自blog.csdn.net/alovelypeach/article/details/113828631
今日推荐