PAT 甲级 1002 A+B for Polynomials

地址    https://pintia.cn/problem-sets/994805342720868352/problems/994805526272000000

题目大意是
输入两个多项式的变量参数和变量指数
按照指定规则显示出来

Sample Input:

2 1 2.4 0 3.2
2 2 1.5 1 0.5

 

Sample Output:

3 2 1.5 1 2.9 0 3.2

解答

开启double数组 记录Ni为索引的aNi系数
然后将两者相加记录.PAT对 格式要求很严,还有边界情况,需要注意

#include <iostream>

using namespace std;

double arrA[1010];
double arrB[1010];

int k1, k2;

int main()
{
    scanf("%d", &k1);
    for (int i = 0; i < k1; i++) {
        int idx; scanf("%d", &idx);
        scanf("%lf", &arrA[idx]);
    }

    scanf("%d", &k2);
    for (int i = 0; i < k2; i++) {
        int idx; scanf("%d", &idx);
        scanf("%lf", &arrB[idx]);
    }

    int count = 0;
    for (int i = 0; i < 1010; i++) {
        arrA[i] += arrB[i];
        if (arrA[i] - 0.0 > 1e-8 || 0.0-arrA[i] > 1e-8) count++;
    }

    printf("%d", count);

    for (int i = 1009; i >= 0; i--) {
        if (arrA[i] - 0.0 > 1e-8 || 0.0-arrA[i] > 1e-8) {
            printf(" %d %.1lf", i, arrA[i]);
        }
    }
    printf("\n");

    return 0;
}

 

posted on 2021-02-07 23:42  itdef  阅读(58)  评论(0编辑  收藏  举报

导航