题意:
这道题讲的是A和B是两个多项式的乘积,就是A*B
注意的坑点:
可恶的0.输出的时候把系数为0的干掉就好了!千万不要留着过年。要是留着过年第一个测试点是一定过不了的!哎英语不好看不懂题意用的google翻译哈哈哈!真的就是超级有意思的哈!!!
#include <bits/stdc++.h>
using namespace std;
int main()
{
multimap<int, double> A;
multimap<int, double> B;
map<int, double, greater<int> > O;
int N;
cin >> N;
int a;
float b;
while (N --)
{
cin >> a >> b;
A.insert(make_pair(a, b));
}
cin >> N;
while (N --)
{
cin >> a >> b;
B.insert(multimap<int, float>::value_type(a,b));
}
for (auto it = A.begin(); it != A.end(); it ++)
for (auto itB = B.begin(); itB != B.end(); itB ++)
{
int a = (*it).first + (*itB).first;
float b = (*it).second * (*itB).second;
if (O[a])
{
O[a] = O[a] + b;
}
else
{
O[a] = b;
}
}
for (auto it = O.begin(); it != O.end(); it ++)
{
if ((*it).second == 0)
O.erase(it);
}
cout << O.size();
for (auto it = O.begin(); it != O.end(); it ++)
{
if ((*it).second != 0)
{
cout<< " " << (*it).first << " " <<fixed<<setprecision(1) << (*it).second;
}
}
return 0;
}