多项式乘法 没啥好说的
我用map做的
唯一要说的可能就是结果为0的不能算做是一项 有一个点没过就是因为忽略0
#include<iostream>
#include<cstdio>
#include<map>
using namespace std;
map<int,double,greater<int> > ans;
map<int,double,greater<int> > res;
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++)
{
int a;double b;
cin>>a>>b;
ans[a]=b;
}
cin>>n;
for(int i=0;i<n;i++)
{
int key;
double val;
cin>>key>>val;
for(map<int,double> :: iterator it = ans.begin();it!=ans.end();it++)
{
int a = it->first + key;
double b = (it->second) * val;
if(res.find(a)!=res.end())
{
res[a]+=b;
}
else{
res[a]=b;
}
}
}
int cou=0;
for(map<int,double> :: iterator it = res.begin();it!=res.end();it++)
{
if(it->second != 0)
cou++;
}
cout<<cou;
for(map<int,double> :: iterator it = res.begin();it!=res.end();it++)
{
if(it->second != 0)
printf(" %d %.1f",it->first,it->second);
}
return 0;
}