PAT真题(C语言)——1009:Product of Polynomials

PAT真题(C语言)——1009:Product of Polynomials_第1张图片
方法基本和1002题一样,只不过这里用二重循环实现相乘的过程。
唯一要注意的一点是,对于系数为0的项是不计入统计的,这里系数为0不光是输入的两组数中包含系数为0,还有可能是在某个结果本来不为0(比如系数为-1.5),加上了新的系数(如1.5)后就为0了,因此每次做完加法还要再判断一次,否则第一个测试点通不过,代码如下:

#include 

#define SIZE 2001

int main(){
    float result[SIZE] = { 0 };
    float line1[20];
    int N1, N2;
    int line2p;
    float line2f;
    int count = 0;

    scanf("%d", &N1);
    for(int i=0; i<N1*2; i++){
        scanf("%f", &line1[i]);
    }
    scanf("%d", &N2);
    for(int i=0;i<N2*2;i+=2){
        scanf("%d %f", &line2p, &line2f);
        for(int j=0;j<N1*2;j+=2){
            if(result[ (int)line1[j] + line2p ] == 0){
                count++;
            }
            result[ (int)line1[j] + line2p ] += line1[j+1] * line2f;
            if(result[((int)line1[j] + line2p)] == 0){
                count--;
            }
        }
    }

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

    return 0;
}

你可能感兴趣的:(PAT)