http://pat.zju.edu.cn/contests/pat-a-practise/1002
#include <stdio.h>
#include <string.h>
double coa[1002]; //分别保存两个多项式指数的系数,最多1000次方
double cob[1002]; //coa[i] i次方的指数
int main()
{
int i,x,k; //指数x,相应系数y,每个多项式有k项
double y; //系数double型,相应输入输出格式%lf
memset(coa,0,sizeof(coa));
memset(cob,0,sizeof(cob));
scanf("%d",&k); //多项式1
for (i=0;i<k;i++)
{
scanf("%d%lf",&x,&y);
coa[x]=y;
}
scanf("%d",&k); //多项式2
for (i=0;i<k;i++)
{
scanf("%d%lf",&x,&y);
cob[x]=y;
}
int ans=0; //非0项个数
for (i=1000;i>=0;i--)
{
coa[i]=coa[i]+cob[i]; //同指数项的系数相加保存在coa[i]
if (coa[i]!=0)
{
ans++;
}
}
printf("%d",ans);
for (i=1000;i>=0;i--)
{
if (coa[i]!=0)
{
if (--ans) //最后一项后面没有空格,一般这么写
{
printf(" %d %.1lf",i,coa[i]); //仅保留一位小数
}
else //若格式错误,空格位置换换试试
{
printf(" %d %.1lf\n",i,coa[i]);
}
}
}
return 0;
}