关于算法-数据结构:PAT甲级1002-AB-for-Polynomials

题目粗心:

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

算法思路:

咱们在输出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;
} 

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理