範例程式碼 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;
}