[PAT题解]1009 Product of Polynomials可能出现的数据更新情况

8 篇文章 0 订阅
6 篇文章 0 订阅

题目链接

原文的意思大概是:给出两行数据,每一行都代表一个多项式,然后求两多项式想乘得到的新多项式。

这次写发现数据更新了,按以前的写法第一个case过不掉了,所以做了一个测试,可能是出现了下面数据的情况

测试样例
2 1 0.0 0 2.3
3 2 0.5 1 1.2 0 0.9
答案
3 2 1.1 1 2.8 0 2.1
而并非为
4 3 0.0 2 1.1 1 2.8 0 2.1

下面是代码

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

#define x first
#define y second
typedef pair<int, double> PID;

const int maxn = 2010;
int n1, n2, cnt;
double mul[maxn];
vector<PID> v1, v2;

void scan(int n, vector<PID> &v) {
	int mi;
	double num;
	for (int i = 0; i < n; i++) {
		cin >> mi >> num;
		PID a;
		a.x = mi, a.y = num;
		v.push_back(a);
	}
}
int main() {
	cin >> n1;
	scan(n1, v1);
	cin >> n2;
	scan(n2, v2);
	for (int i = 0; i < v1.size(); i++) {
		for (int j = 0; j < v2.size(); j++) {
			int num = v1[i].x+v2[j].x;
			mul[num] += v1[i].y*v2[j].y;
		}
	}
	for (int i = 0; i < maxn; i++) {
		if (mul[i] != 0.0) cnt++;
	}
	cout << cnt;
	for (int i = maxn-1; i >= 0; i--) {
		if (mul[i] != 0.0) printf(" %d %.1f", i, mul[i]);
	}
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

max_tanAlpha

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值