2
题目大意:

给出两行,每行表示一个多项式:第一个数表示该多项式中系数非零项的项数,后面每两个数表示一项,这两个数分别表示该项的幂次和系数。
试求两个多项式的和,并以与前面相同的格式输出结果。

算法思路:

我们在输入A和B的时候使用result保存A加B,让result的下标对应指数,其值为系数,然后输入A的时候暂存A,然后输入B的时候,直接对应下标相加即可。然后第一次遍历result统计不为0的项数num,然后再次从后往前遍历数组result,将其系数不为0的项输出。

注意点:

1、需要保留一位小数
2、空格的输出
3、result得初始化,不然对于其值是否为0来判断需要输出就行不通了。

提交结果:

图片.png

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;
} 

乔梓鑫
569 声望17 粉丝

主要分享个人学习经验和心得