PAT-A 1002. A+B for Polynomials (25)


タイトルリンクはこちらです.
意味の理解
同じ形式の2行が与えられ、1行目の最初の整数KはA式の非ゼロ項の個数を表し、後の2つの数ごとに1項を表し、それぞれその項の指数と係数である.2行目はB式の関連項目の情報を表す.A+Bを求めて、つまり多項式は和を求めます.出力フォーマットは入力フォーマットと同じであり、最初のKはA+Bの非ゼロ項の個数である.
構想
私の考え:
3つの配列a[],b[],c[]を用いてそれぞれA式,B式,およびA+B式の結果を保存し,その後,問題の要求に応じてゼロ以外の項目を出力すればよい.(a[i]指数iの項を表す係数)
「アルゴリズムノート」の構想は1つの配列a[]だけを申請し、まずA式を保存し、B式を入力すると、A式の対応する項目、すなわちa[]の対応する項目に直接加算される.(a[i]の意味は同上)
私のACコード
#include

int main(){

    double a[1010]={0.0},b[1010]={0.0},c[1010]={0.0};
    int na,nb;
    int exp; //  expoent 
    double coe;  //  coefficient 
    int count = 0; //         

    scanf("%d",&na);
    for(int i = 0 ; i < na; i++){
        scanf("%d %lf",&exp, &coe);
        a[exp] = coe;  
    } 

    scanf("%d",&nb);
    for(int i = 0 ; i < nb; i++){
        scanf("%d %lf",&exp, &coe);
        b[exp] = coe;
    }

    for(int i = 0; i < 1010; i++){
        if(a[i] != 0 || b[i] != 0){
            c[i] = a[i] + b[i];
            if(c[i] != 0){  //        
                count++;
            }
        }
    }

    printf("%d",count); 
    for(int i = 1009; i >=0; i--){
        if(c[i] != 0){
            printf(" %d %.1f",i,c[i]);
        }
    }
    printf("
"
); return 0; }

注意:この2つの方法は、countがいつ++または–、すなわち最終結果配列のゼロ以外の項目の個数の記録に注意する必要があるかに注意する必要があります.