#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>
#include<map>
#include<algorithm>
#include<functional>
using namespace std;
struct item {
int index;
double number;
item(int _index = 0, double _number = 0) :index(_index), number(_number) {}
};
bool cmp(const item &a, const item &b) {
return a.index < b.index;
}
vector<item> multiply(vector<item> &a, vector<item> &b);
void Scan(vector<item> &a);
void Print(const vector<item> &c);
int main() {
freopen("D://input.txt", "r", stdin);
vector<item> a, b, c;
Scan(a);
Scan(b);
c = multiply(a, b);
Print(c);
return 0;
}
void Scan(vector<item> &a) {
int sumTerm, i;
cin >> sumTerm;
a.resize(sumTerm);
for (i = 0; i < sumTerm; i++)
cin >> a[i].index >> a[i].number;
return;
}
vector<item> multiply(vector<item> &a, vector<item> &b) {
map<int, double, greater<int> > check;
auto ait = a.begin();
auto bit = b.begin();
vector<item> ret;
int _index;
double _number;
for (; ait != a.end(); ait++) {
bit = b.begin();
for (; bit != b.end(); bit++) {
_index = ait->index + bit->index;
_number = ait->number * bit->number;
check[_index] += _number;
}
}
auto checkit = check.begin();
while (checkit != check.end()) {
if (checkit->second != 0) {
ret.push_back(item(checkit->first, checkit->second));
}
checkit++;
}
return ret;
}
void Print(const vector<item> &a) {
int i;
cout << a.size();
for (i = 0; i < a.size(); i++)
printf(" %d %.1lf", a[i].index, a[i].number);
cout << endl;
return;
}
1009. Product of Polynomials
最新推荐文章于 2024-03-04 18:04:28 发布