题目大意:
给出两行,每行表示一个多项式:第一个数表示该多项式中系数非零项的项数,后面每两个数表示一项,这两个数分别表示该项的幂次和系数。
试求两个多项式的和,并以与前面相同的格式输出结果。
算法思路:
我们在输入A和B的时候使用result保存A加B,让result的下标对应指数,其值为系数,然后输入A的时候暂存A,然后输入B的时候,直接对应下标相加即可。然后第一次遍历result统计不为0的项数num,然后再次从后往前遍历数组result,将其系数不为0的项输出。
注意点:
1、需要保留一位小数
2、空格的输出
3、result得初始化,不然对于其值是否为0来判断需要输出就行不通了。
提交结果:
AC代码:
#include<cstdio>
using namespace std;
int main(){
int K;
double result[1001] = {};// result[i]保存的是i次方的系数,一定要初始化{},不然会出错
int N;
double AN;//次方和系数
for(int j=0;j<2;++j){
scanf("%d",&K);
for(int i=0;i<K;++i){
scanf("%d %lf",&N,&AN);
result[N] += AN;
}
}
int num = 0;//系数不为0的项数
for(int i=1000;i>=0;--i){
if(result[i]!=0){
// 系数不为0
++num;
}
}
printf("%d",num);
for(int i=1000;i>=0;--i){
if(result[i]!=0){
// 系数不为0
printf(" %d %.1lf",i,result[i]);
}
}
return 0;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。