範例程式碼 uva10326

//uva10326
#include <iostream>
#include <iomanip>
#include <vector>
#include <math.h>

using namespace std;

int main() {
    int root_num = 0;
    vector<long long> init;
    vector<long long> output;
    vector<vector<long long>> dp;

    while (cin >> root_num) {
        int temp = 0;
        init.assign(root_num + 1, 0);
        dp.assign(root_num, init);

        for (int i = 0; i < root_num; i++) {
            cin >> temp;

            temp = -temp;
            dp[i][0] = 1;
            if (i == 0) {
                dp[i][1] = temp;
                continue;
            }

            for (int j = 1; j < i + 2; j++) {
                dp[i][j] = dp[i - 1][j - 1] * temp + dp[i - 1][j];
            }
        }

        output = dp.back();
        for (int i = 0; i <= root_num; i++) {
            int power = root_num - i;

            if (output[i] == 0 && i != root_num) {
                continue;
            }
            if (i == 0) {  // 首項
                if (power == 0) {
                    cout << "1";
                    break;
                } else if (power == 1) {
                    cout << "x";
                    continue;
                } else {
                    cout << "x^" << power;
                    continue;
                }
            } else if (0 < i && i < root_num) {  // 中間項
                if (output[i] < 0) {
                    cout << " - ";
                } else if (output[i] > 0) {
                    cout << " + ";
                }
                if (abs(output[i]) > 1) {
                    cout << abs(output[i]);
                }
            } else if (i == root_num) {
                if (output[i] < 0) {
                    cout << " - ";
                } else if (output[i] >= 0) {
                    cout << " + ";
                }
                cout << abs(output[i]);
                continue;
            }
            if (power == 1) {
                cout << "x";
            } else {
                cout << "x^" << power;
            }
        }
        cout << " = 0" << endl;
    }
    return 0;
}