题目粗心:
给出两行,每行示意一个多项式: 第一个数示意该多项式中系数非零项的项数,前面每两个数示意一项,这两个数别离示意该项的幂次和系数。
试求两个多项式的和,并以与后面雷同的格局输入后果。
算法思路:
咱们在输出 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;
}