题目链接:http://www.patest.cn/contests/pat-a-practise/1002 两个多项式相加
1. 输入 项数k1 k1个(次数 底数) 次数的范围是[0-1000]
项数k2 k2个(次数 底数)
输出 和的项数k k个(次数 底数)
2. 解题关键: 题目中的底数是小数,而输出时要求精确到一位小数,而且还要输出项数,所以在求得k次的底数时, 如果底数在(-0.05,0.05),就忽略此项。
#include <iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
float num[1010];
int _max=-1;
int cnt=0;
int main()
{
// freopen("in.txt","r",stdin);
for(int i=0; i<1010; i++)
num[i]=0;
int k;
for(int j=0; j<2; j++)
{
cin>>k;
for(int i=0; i<k; i++)
{
int a;
float b;
cin>>a;
cin>>b;
num[a]+=b;
if(a>_max)
_max=a;
}
}
cnt=0;
for(int i=_max; i>=0; i--)
{
if(num[i]>-0.05 && num[i]<0.05 )
continue;
cnt++;
}
cout<<cnt;
if(cnt==0) return 0;
for(int i=_max; i>=0; i--)
{
if(num[i]>-0.05 && num[i]<0.05 )
continue;
printf(" %d %.1lf",i,num[i]);
}
return 0;
}