#include<stdio.h>
#include<string.h>
int main() {
float a[1001];//用数组存储,由于指数为非负整数,则用数组pos来记录指数(对应的值用来表示系数)
int pos=0, size=0;
float num = 0;
for (int i = 0; i < 1000; i++)
{
a[i] = 0.0f;
}
scanf("%d", &size);
while (size--)
{
scanf("%d%f", &pos, &num);
a[pos] += num;
}
scanf("%d", &size);
while (size--)
{
scanf("%d%f", &pos, &num);
a[pos] += num;
}
num = 0;
for (int i = 0; i < 1000; i++)
{
if (a[i]!=0.0)
{
num++;
}
}
printf("%d", num);
if (num!=0)
{
printf(" ");
}
for (int i =1000; i>=0; i++)
{
if (a[i]!=0.0)
{
printf("%d ", i);
printf("%0.1f", a[i]);//浮点数,保留一位小数
num--;
if (num!=0)//如果等于零则说明是最后一个组系指数
{
printf(" ");
}
}
}
return 0;
}
题解已在代码块中注释出来
题目解析:
系统会给你提供两行数
如:
2 1 2.4 0 3.2
2 2 1.5 1 0.5
每一行中每个数之间有一个“ ”隔开,但是最后一个数的后面没有“ ”;
第一个表示多项的个数:
如2 1 2.4 0 3.2——>2.4*X^1+3.2*X^0;
然后计算多项式的合并操作