PAT甲级 1002 A+B for Polynomials

发布时间 2023-11-09 09:43:44作者: 胖柚の工作室

原题链接:

本题需要将相同次数的项进行相加,因此在初始输入的时候就直接用数组记录每个次数项,下标为次数,值为对应次数项的值(用+=)
遍历整个数组,看有几个元素非0即可知非0项的个数。
因要求降幂输出,则从后向前遍历,输出每个元素的下标和值。

#include <bits/stdc++.h>
using namespace std;

double a[1010];
int cnt;
int main()
{
    int k1, k2, n;
    double num;
    scanf("%d", &k1);
    for (int i = 0; i < k1; i++) {
        scanf("%d%lf", &n, &num);
        a[n] += num;
    }
    scanf("%d", &k2);
    for (int i = 0; i < k2; i++) {
        scanf("%d%lf", &n, &num);
        a[n] += num;
    }

    for (int j = 0; j < 1002; j++) {
        if (a[j]) cnt++;
    }

    printf("%d", cnt);
    for (int j = 1001; j >= 0; j--) {
        if (a[j]) printf(" %d %.1f", j, a[j]);
    }
    return 0;
}