多项式求和问题。本题比较清晰简单,只需开个数组对相应指数位置的数进行相加即可。
思路:
1.开个1000左右的浮点型数组,初始化为0。数组的下标对应指数大小(指数>=0),对于相应指数位置的数值,直接与该位置的数字相加。
2.因为要输出多少位的指数不等于0,设置一个计数器用于输出,控制格式即可。
代码如下:
#include <iostream>
#include<cstdio>
using namespace std;
int main()
{
double llist[1001]={0};
for(int i=0;i<2;i++)
{
int k;
cin>>k;
for(int j=0;j<k;j++)
{
int a;
double b;
cin>>a>>b;
llist[a]+=b;
}
}
int num=0;
for(int i=0;i<=1000;i++)
{
if(llist[i]!=0)
num++;
}
cout<<num;
for(int i=1000;i>=0;i--)
{
if(llist[i]!=0)
{
cout<<" ";
printf("%d %.1f", i, llist[i]);
}
}
return 0;
}