【PAT甲级】1002. A+B for Polynomials (25)

题目:https://www.patest.cn/contests/pat-a-practise/1002

易错点:
1. 保留小数
2. 系数相加为零的项就没了

#include<iostream>
using namespace std;

int main() {
    int K1, K2;
    int E1[10], E2[10];
    float C1[10], C2[10];
    int E3[20];
    float C3[20];
    for (int i = 0;i < 10;i++) {
        C1[i] = 0;
        C2[i] = 0;
    }
    cin >> K1;
    for (int i = 0;i < K1;i++) {
        cin >> E1[i] >> C1[i];
    }
    cin >> K2;
    for (int i = 0;i < K2;i++) {
        cin >> E2[i] >> C2[i];
    }
    int count = 0;
    int temp1, temp2, temp3;
    temp1 = temp2 = temp3 = 0;
    for (;temp1 < K1 && temp2 < K2;) {
        if (E1[temp1] > E2[temp2]) {
            E3[temp3] = E1[temp1];
            C3[temp3] = C1[temp1];
            temp1++;
            temp3++;
        }
        else if (E2[temp2] > E1[temp1]) {
            E3[temp3] = E2[temp2];
            C3[temp3] = C2[temp2];
            temp3++;
            temp2++;
        }
        else if (E1[temp1] == E2[temp2]) {
            //一开始忘了考虑这个
            if (C1[temp1] + C2[temp2] != 0) {
                E3[temp3] = E1[temp1];
                C3[temp3] = C1[temp1] + C2[temp2];
                temp1++;
                temp2++;
                temp3++;
            }
            else {
                temp1++;
                temp2++;
            }
        }
    }
    while (temp1 < K1) {
        E3[temp3] = E1[temp1];
        C3[temp3] = C1[temp1];
        temp1++;
        temp3++;
    }
    while (temp2 < K2) {
        E3[temp3] = E2[temp2];
        C3[temp3] = C2[temp2];
        temp2++;
        temp3++;
    }
    count = temp3;
    cout << count;
    for (int i = 0;i < count;i++) {
        cout << " " << E3[i] << " ";
        //突然忘了C++里面怎么保留小数,凑活用下(
        printf("%.1f", C3[i]);
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/dango_miracle/article/details/79302174