⬆︎
×

[PAT-A] 1002 A+B for Polynomials

Hyplus目录

Java

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {
    private static final int N = 1010;
    private static double[] a = new double[N];
    private static double[] b = new double[N];
    private static List<Pair> c = new ArrayList<>();

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        input(scanner, a);
        input(scanner, b);

        for (int i = N - 1; i >= 0; i--) {
            if (a[i] + b[i] != 0) {
                c.add(new Pair(i, a[i] + b[i]));
            }
        }

        System.out.print(c.size());
        for (Pair pair : c) {
            System.out.printf(" %d %.1f", pair.exponent, pair.coefficient);
        }
    }

    private static void input(Scanner scanner, double[] array) {
        int n = scanner.nextInt();
        while (n-- > 0) {
            int exponent = scanner.nextInt();
            double coefficient = scanner.nextDouble();
            array[exponent] = coefficient;
        }
    }

    private static class Pair {
        int exponent;
        double coefficient;

        Pair(int exponent, double coefficient) {
            this.exponent = exponent;
            this.coefficient = coefficient;
        }
    }
}

C++

#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>

using namespace std;

const int N = 1010;

double a[N], b[N];
vector <pair<int, double>> c;    // (expon, coef)

void input(double a[]) {
    int n;
    scanf("%d", &n);
    while (n--) {
        int expon;
        double coef;
        scanf("%d%lf", &expon, &coef);
        a[expon] = coef;
    }
}

int main() {
    input(a);
    input(b);

    for (int i = N - 1; i >= 0; i--)
        if (a[i] + b[i])
            c.push_back({i, a[i] + b[i]});

    cout << c.size();
    for (auto it: c)
        printf(" %d %.1f", it.first, it.second);

    return 0;
}

发表评论