【1009 25 多项式乘法】 Product of Polynomials
传送门
题意
计算多项式的乘积,给定两行数据,每行都是 \(k\) 组数据,其中 \(n\) 表示指数,\(a\) 表示系数,最后输出乘积的项数和按照指数从大到小的系数和指数
数据范围
\(1\leq k\leq 10\)
\(1\leq n\leq 1000\)
题解
cout << fixed << setprecision(1),设置输出的浮点数位数map<int, int, greater<int>>,设置顺序是按照key从大到小排序- 每一项对应相乘,按照指数相加,系数相乘的规则运算即可
Code
#include <bits/stdc++.h>
using namespace std;
#define fi first
#define se second
map<int, double, greater<int>> x, res, ans;
int main() {
int k, p; double a;
cin >> k;
for (int i = 0; i < k; i++) {
cin >> p >> a;
x[p] = a;
}
cin >> k;
for (int i = 0; i < k; i++) {
cin >> p >> a;
for (auto it : x) {
res[p + it.fi] += a * it.se;
}
}
for (auto it : res) {
if (it.se != 0) {
ans[it.fi] = it.se;
}
}
cout << fixed << setprecision(1);
cout << ans.size();
for (auto& it : ans) {
cout << " " << it.fi << " " << it.se;
}
}

浙公网安备 33010602011771号