1009 Product of Polynomials (25 分)

捕获.PNG

解题思路:

定义三个数组double a[1001],b[1001],c[2001]分别用来表示多项式A,多项式B,和它们的成绩,其中下标表示指数,元素值代表系数

注意点:数组c的长度要大于2001,a,b,c都要初始化为零

#include <iostream>
#include<math.h>
using namespace std;
int main()
{
	//数组下标代表指数,元素值代表系数
	double a[1001] = { 0 }, b[1001] = { 0}, c[2001] = {0};
	int n, m;
	cin >> n;
	for (int i = 0;i < n;i++) {
		int ex;
		double ef;
		cin >> ex >> ef;
		a[ex] = ef;
	}
	cin >> m;
	for (int i = 0;i < m;i++) {
		int ex;
		double ef;
		cin >> ex >> ef;
		b[ex] = ef;
	}
	for (int i = 0;i < 1001;i++) {
		//系数不为零时
		if (a[i] != 0) {
			for (int j = 0;j < 1001;j++) {
				if (b[j] != 0) {
					double x = a[i] * b[j];//相乘后的系数
					int k = i + j;//相乘后的指数
					c[k] += x;
				}
			}
		}
	}
	int num = 0;
	for (int i = 0;i < 2001;i++) {
		if (c[i]!=0)
			num++;
	}
	cout << num ;
	for (int i = 2000;i >=0;i--) {
		if (c[i]!=0) {
			printf(" %d %.1lf", i, c[i]);
		}
	}
	return 0;
}

posted @ 2019-03-05 18:51  Chance-Zou  阅读(463)  评论(0编辑  收藏  举报