我的天啊,PAT真的處處都是坑,第一次提交30分,忽略了兩個點~~~
(1)如果兩個多項式相加後沒有係數非0的項,應該只輸出“0”,後面不能跟空格
(2)兩個多項式中某一項相加係數是0了,就不能輸出這一項,前面K計數時,也不能把這一項算進去。
#include<cstdio>
#include<map>
using namespace std;
int main()
{
int a,b;
map<int,float,greater<int>> mp;
map<int,float>::iterator it;
scanf("%d",&a);
for(int i=0;i<a;i++)
{
int c;
float d=1.0;
scanf("%d%f",&c,&d);
mp[c]=d;
}
scanf("%d",&b);
for(int i=0;i<b;i++)
{
int c;
float d=1.0;
scanf("%d%f",&c,&d);
if(mp.find(c)==mp.end()) mp[c]=d;
else{
mp[c]+=d;
if((mp[c]>-1e-6) && (mp[c]<1e-6))
mp.erase(c);
}
}
printf("%d",mp.size());
if(mp.size()==0) return 0;
for(it=mp.begin();it!=mp.end();it++)
{
printf(" %d %.1f",it->first,it->second);
}
}